0

我有一个用作按钮的标签。我想当我按下一个按钮时这个标签的点击事件采取行动。例如

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

现在我想当我按下这个按钮时,要执行 label1 点击事件

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

5 回答 5

5
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));
}
于 2013-08-02T18:39:08.260 回答
2

有两种方法可以做到这一点。

第一的:

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

于 2013-08-02T18:42:30.870 回答
0
private void button1_Click(object sender, EventArgs e)
{
     //What the label click do:
      MessageBox.Show("I pressed this label and showed me this messagebox");
}

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

于 2013-08-02T18:37:26.623 回答
0

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

private void button1_Click(object sender, EventArgs e)
    {
        label1_Click(sender, e);
    }
于 2013-08-02T18:47:05.880 回答
0
public class MyLabel:Label
{
    public void PerformClick()
    {
        OnClick(new EventArgs());//InvokeOnClick(this,new EventArgs());
    }
}
于 2015-11-14T01:27:49.523 回答