如何从另一个方法调用按钮单击事件

时间:2012-07-17 08:15:18

标签: c#

如何从其他方法调用SubGraphButton_Click(object sender, RoutedEventArgs args)

private void SubGraphButton_Click(object sender, RoutedEventArgs args)
{
}

private void ChildNode_Click(object sender, RoutedEventArgs args)
{
   // call SubGraphButton-Click().
}

15 个答案:

答案 0 :(得分:57)

您可以通过简单地将参数传递给它来调用button_click事件:

private void SubGraphButton_Click(object sender, RoutedEventArgs args)
{
}

private void ChildNode_Click(object sender, RoutedEventArgs args)
{
   SubGraphButton_Click(sender, args);
}

答案 1 :(得分:45)

您可以通过以下代码轻松完成此操作(假设您的按钮名称为 btnButton ):

btnButton.PerformClick();

答案 2 :(得分:15)

你可以通过传递来调用button_click事件。

private void SubGraphButton_Click(object sender, RoutedEventArgs args)
{
}

private void ChildNode_Click(object sender, RoutedEventArgs args)
{
   SubGraphButton_Click(sender, args);
}

也没有通过..

private void SubGraphButton_Click(object sender, EventArgs args)
{
}

private void Some_Method() //this method is called
{
   SubGraphButton_Click(new object(), new EventArgs());
}

答案 3 :(得分:7)

您可以执行不同的方法来解决此问题。最好的方法是,如果您的两个按钮都假设执行相同的工作,您可以定义第三个功能来完成工作。例如:

private void SubGraphButton_Click(object sender, RoutedEventArgs args)
{
    myJob()  
}

private void ChildNode_Click(object sender, RoutedEventArgs args)
{
    myJob()
}

private void myJob()
{
    // Your code here
}

但如果你仍坚持按照自己的方式行事,最好的行动是:

private void SubGraphButton_Click(object sender, RoutedEventArgs args)
{
}

private void ChildNode_Click(object sender, RoutedEventArgs args)
{
   SubGraphButton_Click.PerformClick();
}

答案 4 :(得分:4)

通常更好的方法是触发事件(点击),而不是直接调用方法。

答案 5 :(得分:3)

private void PictureBox1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Click Succes");
}

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == 13)
    {
        PictureBox1_Click(sender, e); //or try this one "this.PictureBox1_Click(sender, AcceptButton);"
    }
}

答案 6 :(得分:2)

你可以简单地称之为:

SubGraphButton_Click(sender, args);

现在,如果你的SubGraphButton_Click对args做了些什么,你可能会遇到麻烦,但通常你不会对它们做任何事情。

答案 7 :(得分:2)

在WPF中,您可以通过以下方式轻松完成:

this.button.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));

答案 8 :(得分:1)

从任何地方调用它的简单方法就是使用“ null”和“ RoutedEventArgs.Empty”,如下所示:

SubGraphButton_Click(null, RoutedEventArgs.Empty);

答案 9 :(得分:0)

将其添加到Click委托的实例:

ChildNode.Click += SubGraphButton_Click

使用模式.NET事件跟随(Observer)。

答案 10 :(得分:0)

对我而言,这适用于WPF

    private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            RoutedEventArgs routedEventArgs = new RoutedEventArgs(ButtonBase.ClickEvent, Button_OK);
            Button_OK.RaiseEvent(routedEventArgs);
        }
    }

答案 11 :(得分:0)

使用InvokeOnClick事件。即使按钮不可见/禁用,它也能正常工作

答案 12 :(得分:0)

对于想知道的人,这也适用于单击按钮。 例如:

private void btn_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Test")
        }

private void txb_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
            {
                btn_Click(sender, e);
            }

在这种情况下,当在文本字段(txb)中按Enter键时,它将单击激活消息框的按钮。

答案 13 :(得分:0)

我们在这个项目中有2个表格。 更改为主要形式

private void button1_Click(object sender, EventArgs e) { // work }

public void button1_Click(object sender, EventArgs e) { // work }

以及其他形式,当我们需要上述功能时

        private void button2_Click(object sender, EventArgs e)
    {
        main_page() obj = new main_page();
        obj.button2_Click(sender, e);
    }

答案 14 :(得分:0)

对于WPF:

YourButtonName.RaiseEvent(new RoutedEventArgs(System.Windows.Controls.Primitives.ButtonBase.ClickEvent));