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

本文关键字:执行 标签 单击 | 更新日期: 2023-09-27 18:25:56

我有一个标签可以用作按钮。我希望当我按下一个按钮时,点击事件到此标签以采取行动。例如

private void Label1_Click(object sender, EventArgs e)
{
    MessageBox.Show("I pressed this label and showed me this messagebox");
}

现在我想当我按下这个按钮时,标签点击事件将被执行

private void button1_Click(object sender, EventArgs e)
{
    // I want when I press this button something like this happens
    Label1.PerformClick();
}

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

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); 

对于第二种方法,请注意,在C#中,委托是多播,因此button1_Click处理程序Label1_Click处理程序都将在单击按钮时按绑定顺序调用。

private void button1_Click(object sender, EventArgs e)
{
     //What the label click do:
      MessageBox.Show("I pressed this label and showed me this messagebox");
}

这不是更容易吗?你为什么要这么做?

我认为在按钮点击中只包含标签点击功能会更容易。甚至可以用自己的方法将每个片段分开,然后点击按钮调用它们。以下是如何调用另一个单击事件。

private void button1_Click(object sender, EventArgs e)
    {
        label1_Click(sender, e);
    }
public class MyLabel:Label
{
    public void PerformClick()
    {
        OnClick(new EventArgs());//InvokeOnClick(this,new EventArgs());
    }
}