Событие кнопки огня вручную - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть текстовое поле поиска в Windows WPF. Всякий раз, когда пользователь нажимает клавишу ввода после написания какого-либо запроса в 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 ]

1 голос
/ 24 февраля 2012

Можно, но лучше переместить логику поиска в метод, такой как DoSearch, и вызвать его из обоих мест (текстовое поле и кнопка поиска).

0 голосов
/ 24 февраля 2012

Событие не может быть запущено / возбуждено извне класса, в котором оно определено. (Используя рефлексию, вы определенно можете это сделать, но это не очень хорошая практика.)

Сказав это, вы всегда можете вызвать обработчик события нажатия кнопки из кода как простой вызов метода, как показано ниже

private void queryText_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
        OnSearchButtonClick(SearchButton, null);
    }
}
0 голосов
/ 24 февраля 2012

Вы можете создать общий метод для поиска 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();
}
0 голосов
/ 24 февраля 2012

Вы говорите о ручном вызове buttonSearch_onClick(this, null);?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...