41

如何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().
}
4

15 回答 15

87

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

btnButton.PerformClick();
于 2014-09-16T21:37:26.740 回答
78

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

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

private void ChildNode_Click(object sender, RoutedEventArgs args)
{
   SubGraphButton_Click(sender, args);
}
于 2012-07-17T08:20:31.513 回答
18

您可以通过传递来调用 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());
}
于 2014-11-18T23:09:18.223 回答
8

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

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();
}
于 2014-10-22T08:45:35.613 回答
4

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

于 2012-07-17T08:19:24.940 回答
4

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

this.button.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
于 2018-05-25T03:27:07.940 回答
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);"
    }
}
于 2016-05-15T12:35:09.693 回答
2

您可以简单地调用它:

SubGraphButton_Click(sender, args);

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

于 2012-07-17T08:18:48.293 回答
1

对我来说,这在 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);
        }
    }
于 2016-07-28T08:22:48.617 回答
1

使用 InvokeOnClick 事件。即使按钮不可见/禁用它也可以工作

于 2017-07-10T22:16:54.810 回答
1

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

SubGraphButton_Click(null, RoutedEventArgs.Empty);
于 2020-01-22T20:18:57.373 回答
0

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

ChildNode.Click += SubGraphButton_Click

这与 .NET 事件遵循的模式(观察者)保持一致。

于 2014-07-13T17:13:42.850 回答
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 时,它将单击将激活消息框的按钮。

于 2019-01-16T13:59:35.473 回答
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);
    }
于 2020-03-25T20:40:09.667 回答
0

对于 WPF:

YourButtonName.RaiseEvent(new RoutedEventArgs(System.Windows.Controls.Primitives.ButtonBase.ClickEvent));
于 2020-05-08T23:41:09.123 回答