#CheckBox鼠标右键点击时,不能触发定义的鼠标点击事件
public Form1()
{
InitializeComponent();
cb1 = new CheckBox();
cb1.AutoSize = true;
cb1.Location = new System.Drawing.Point(16, 16);
cb1.Margin = new System.Windows.Forms.Padding(4);
cb1.Name = "checkBox1";
cb1.Size = new System.Drawing.Size(594, 52);
cb1.TabIndex = 0;
cb1.Text = "check1";
cb1.UseVisualStyleBackColor = true;
cb1.Text = AddEnterToText("本项目为xxxxxxxxxxxx,位于xxxxxx,东临xxx路,西临xxx路,南临xxx路,北临xxx路。地下x层,地上x层建筑高度为xx米,结构高度为xx米," +
"总建筑面积为xxxx平方,包含xx、xx等功能");
cb1.MouseClick += new MouseEventHandler(Form1_MouseClick);
cb1.ForeColor = Color.Green;
//cb1.ContextMenuStrip = this.contextMenuStrip;
//cb1.MouseClick += new MouseEventHandler(MouseClick_cb1);
this.Controls.Add(cb1);
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
bool vs = cb1.Bounds.Contains(e.Location);
if (e.Button == MouseButtons.Left && cb1.Bounds.Contains(e.Location))
{
contextMenuStrip.Items[1].Enabled = false;
contextMenuStrip.Show(cb1, e.Location);
}
else if (e.Button == MouseButtons.Right)
{
contextMenuStrip.Items[0].Enabled = false;
contextMenuStrip.Show(this, e.Location);
}
}
}
#我右键点击cb1这个CheckBox时候,不触发定义的鼠标点击事件
直接给checkbox设置contextmenu就行了。
【以下回答由 GPT 生成】
通过查看你提供的代码,我发现问题出在你使用的MouseClick
事件上。MouseClick
事件只会在鼠标左键点击时触发,而不会在鼠标右键点击时触发。要捕捉到右键点击事件,你需要使用MouseDown
事件。下面是修改后的代码示例:
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
bool isInsideBounds = cb1.Bounds.Contains(e.Location);
if (e.Button == MouseButtons.Left && isInsideBounds)
{
contextMenuStrip.Items[1].Enabled = false;
contextMenuStrip.Show(cb1, e.Location);
}
else if (e.Button == MouseButtons.Right && isInsideBounds)
{
contextMenuStrip.Items[0].Enabled = false;
contextMenuStrip.Show(cb1, e.Location);
}
}
public Form1()
{
InitializeComponent();
cb1 = new CheckBox();
cb1.AutoSize = true;
cb1.Location = new System.Drawing.Point(16, 16);
cb1.Margin = new System.Windows.Forms.Padding(4);
cb1.Name = "checkBox1";
cb1.Size = new System.Drawing.Size(594, 52);
cb1.TabIndex = 0;
cb1.Text = "check1";
cb1.UseVisualStyleBackColor = true;
cb1.Text = AddEnterToText("本项目为xxxxxxxxxxxx,位于xxxxxx,东临xxx路,西临xxx路,南临xxx路,北临xxx路。地下x层,地上x层建筑高度为xx米,结构高度为xx米," +
"总建筑面积为xxxx平方,包含xx、xx等功能");
cb1.MouseDown += new MouseEventHandler(Form1_MouseDown);
cb1.ForeColor = Color.Green;
this.Controls.Add(cb1);
}
在修改后的代码中,我将原来的MouseClick
事件修改为MouseDown
事件,并相应地修改了事件处理方法Form1_MouseDown
。现在,当你右键点击cb1
时,鼠标点击事件应该会正确触发。
【相关推荐】