我有一個刷新顯示的Windows窗體鏈接標籤「刷新」。在沒有用戶輸入的情況下觸發「點擊」事件
在我的代碼的另一部分,一個單獨的Windows窗體的一部分,我有一個對話框,首先將數據加載到顯示中。執行其他代碼後,按「刷新」可以正確更新數據。
是否有一個簡單的方法讓對話框菜單在完成更改數據後「單擊」刷新鏈接標籤?
使用Visual Studio 2008
我有一個刷新顯示的Windows窗體鏈接標籤「刷新」。在沒有用戶輸入的情況下觸發「點擊」事件
在我的代碼的另一部分,一個單獨的Windows窗體的一部分,我有一個對話框,首先將數據加載到顯示中。執行其他代碼後,按「刷新」可以正確更新數據。
是否有一個簡單的方法讓對話框菜單在完成更改數據後「單擊」刷新鏈接標籤?
使用Visual Studio 2008
對於按鍵非常簡單,只需使用:
button.PerformClick()
不管怎樣,我更願意做這樣的事情:
private void button_Click(object sender, EventArgs e)
{
DoRefresh();
}
public void DoRefresh()
{
// refreshing code
}
,並呼籲DoRefresh()
代替PerformClick()
EDIT(根據OP的變化):
你仍然可以使用我的第二個解決方案,這是遠遠優於:
private void linkLabel_Click(object sender, EventArgs e)
{
DoRefresh();
}
public void DoRefresh()
{
// refreshing code
}
而且從形式外,你可以調用DoRefresh()
,因爲它是明顯的公開。
但是,如果你真的需要以編程方式生成一個點擊,就看Yuriy-Faktorovich's Answer
你可以把PerformClick method。但是,通常最好讓按鈕的Click事件調用您編寫的Refresh方法。菜單也調用該方法。否則,你的菜單取決於在那裏的按鈕。
編輯:
LinkLabel顯式實現IButtonControl。所以,你可以使用:
((IButtonControl)button).PerformClick();
你可以用一種方法來refrech顯示屏,bouton_click和對話框調用此方法
public void refrechDate()
{
}
private void button_click(...)
{
refrechData();
}
private void MyMethod()
{
// ...
// calling refresh
this.button1_Click(this.button1, EventArgs.Empty);
// ...
}
private void button1_Click(object sender, EventArgs e)
{
// refresh code
}
+1的替代PerformClick。 PerformClick是生產代碼中的一種剽竊方法。我認爲它通常應該僅限於測試。 – 2010-07-06 15:50:02
我的錯;我認爲這是一個按鈕,但它實際上是一個鏈接標籤,就像一個按鈕。 有沒有類似的方法? – 2010-07-06 15:53:22
http://msdn.microsoft.com/en-us/library/bb337532.aspx,但正如你所說,一個單獨的方法更好。 – 2010-07-06 16:01:52