手动触发按钮事件

时间:2012-02-24 05:02:01

标签: c# wpf

我的WPF Windows上有一个搜索文本框。每当用户在textBox中写入一些查询后按下回车键时,该过程应该开始。

现在,我也有了这个搜索按钮,如果我执行了所有这些过程。

所以,对于texBox:

<TextBox x:Name="textBox1" Text="Query here" FontSize="20" Padding="5" Width="580" KeyDown="textBox1_KeyDown"></TextBox>

private void queryText_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Return)
            {
                //how do I fire the button event from here?
            }
        }

4 个答案:

答案 0 :(得分:1)

可以将搜索逻辑移动到DoSearch之类的方法,然后从两个位置(文本框和搜索按钮)调用它。

答案 1 :(得分:0)

您是在谈论手动调用buttonSearch_onClick(this, null);吗?

答案 2 :(得分:0)

您可以创建一个常用方法来搜索ex

public void MySearch()
{
     //Logic
}

然后把它叫做你想要的分散的地方......

private void queryText_KeyDown(object sender, KeyEventArgs e)
     {
         if (e.Key == Key.Return)
         {
                      MySearch();
         }
     }

private void buttonSearch_onClick(object sender, EventArgs e)
{
     MySearch();
}

答案 3 :(得分:0)

不能从定义它的类之外触发/引发事件。(使用反射你绝对可以做到这一点,但不是一个好的做法。)

话虽如此,你总是可以从代码中调用按钮点击事件处理程序,如下面的简单方法调用

private void queryText_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
        OnSearchButtonClick(SearchButton, null);
    }
}