Инициирование события «Click» без ввода пользователя - PullRequest
5 голосов
/ 06 июля 2010

У меня есть ярлык ссылки Windows Forms, «Обновить», который обновляет экран.

В другой части моего кода, части отдельной формы окна, у меня есть диалог, который изменяет данные, загруженные вдисплей на первом месте.После выполнения этого другого кода нажатие кнопки «Обновить» обновляет данные правильно.

Существует ли простой способ для диалогового меню «щелкнуть» ярлыком ссылки «обновить» после того, как он закончил изменять данные?

Использование Visual Studio 2008.

Ответы [ 4 ]

9 голосов
/ 06 июля 2010

Для кнопки действительно просто, просто используйте:

button.PerformClick()

В любом случае, я бы предпочел сделать что-то вроде:

private void button_Click(object sender, EventArgs e)
{
   DoRefresh();
}

public void DoRefresh()
{
   // refreshing code
}

и звоните DoRefresh() вместо PerformClick()


РЕДАКТИРОВАТЬ (в соответствии с изменениями OP):

Вы все еще можете использовать мое второе решение, которое гораздо предпочтительнее:

private void linkLabel_Click(object sender, EventArgs e)
{
   DoRefresh();
}

public void DoRefresh()
{
   // refreshing code
}

И из-за пределов формы вы можете позвонить DoRefresh(), так как она помечена как общедоступная.

Но, если вам действительно нужно программно генерировать клик, просто посмотрите на Ответ Юрия-Факторовича

5 голосов
/ 06 июля 2010

Вы можете вызвать метод PerformClick . Но обычно лучше, чтобы событие Click кнопки вызывало метод Refresh, который вы пишете. И меню также вызывает этот метод. В противном случае ваше меню зависит от присутствия кнопки.

Edit:

LinkLabel явно реализует IButtonControl. Таким образом, вы можете использовать:

((IButtonControl)button).PerformClick();

0 голосов
/ 06 июля 2010
private void MyMethod()
{
   // ...

   // calling refresh
   this.button1_Click(this.button1, EventArgs.Empty);

   // ...
}

private void button1_Click(object sender, EventArgs e)
{
   // refresh code
}
0 голосов
/ 06 июля 2010

вы можете использовать метод для обновления дисплея, bouton_click и dialogBox вызывают этот метод

public void refrechDate()
{
}


private void button_click(...)
{
   refrechData();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...