Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中执行标签单击?_C#_Click_Label - Fatal编程技术网

如何在C#中执行标签单击?

如何在C#中执行标签单击?,c#,click,label,C#,Click,Label,我有一个作为按钮的标签。我希望当我按下按钮时,单击此标签的事件以采取行动。比如说 private void Label1_Click(object sender, EventArgs e) { MessageBox.Show("I pressed this label and showed me this messagebox"); } 现在我想当我按下这个按钮时,label1 click事件将被执行 private void button1_Click(object sender,

我有一个作为按钮的标签。我希望当我按下按钮时,单击此标签的事件以采取行动。比如说

private void Label1_Click(object sender, EventArgs e)
{
    MessageBox.Show("I pressed this label and showed me this messagebox");
}
现在我想当我按下这个按钮时,label1 click事件将被执行

private void button1_Click(object sender, EventArgs e)
{
    // I want when I press this button something like this happens
    Label1.PerformClick();
}
这不容易吗? 你为什么要这么做

private void button1_Click(object sender, EventArgs e)
{
   Label1_Click(sender, e);
}
现在,如果您想显示一条消息,其中的控件被单击,请执行以下操作

private void label1_Click(object sender, EventArgs e)
{
    Control control = (Control)sender;
    var name = control.Name;
    MessageBox.Show(string.Format("I pressed this {0} and showed me this messagebox",name));
}
有两种方法可以做到这一点

第一名:

private void button1_Click(object sender, EventArgs e)
{
   Label1_Click(sender, e); // Just call the Label's click handler
}
// Bind the Label1_Click handler to the button1 Click event, as they both use the same delegate
button1.Click += new EventHandler(Label1_Click); 
秒:

private void button1_Click(object sender, EventArgs e)
{
   Label1_Click(sender, e); // Just call the Label's click handler
}
// Bind the Label1_Click handler to the button1 Click event, as they both use the same delegate
button1.Click += new EventHandler(Label1_Click); 

对于第二种方法,请注意,在C中,委托是多播的,因此单击按钮时,
button1\u-Click
处理程序和
Label1\u-Click
处理程序都将按绑定顺序被调用。

我认为只需将标签单击功能包含在按钮单击中就更容易了。甚至可以用他们自己的方法将每一部分分开,并通过点击按钮调用它们。下面是如何调用另一个单击事件

private void button1_Click(object sender, EventArgs e)
    {
        label1_Click(sender, e);
    }

您可以只使用
按钮
。现在有一个棘手的问题要问您
Muhand Jumah
是否希望显示一条消息,说明您在按钮时单击了按钮,或者您单击了标签,尽管两者调用了相同的方法。。?如果是这样的话,也可以通过在
发送器上执行
开关{}case{}
来实现,那么这样做并不容易,因为如果我有这么多代码呢?比如说100行?如果我只是照你说的做,那么我会无缘无故地多写100行。因此,如果我这样做,我将只有一个额外的行。你明白我的意思吗?用你所有的
Label1\u点击
代码创建一个函数,该函数将从label&按钮调用。我现在明白你的意思了。这也是一个好办法。但我会使用这个“label1_Click(sender,e);”因为它工作得非常好!但是谢谢你的跟进。