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

これを回避するためにさまざまなアプローチを実行できます。最善のアプローチは、両方のボタンが同じ仕事をすることを想定している場合、その仕事をするための3番目の関数を定義できることです。例えば ​​:

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 に答える