2010-07-06 43 views
5

我有一個刷新顯示的Windows窗體鏈接標籤「刷新」。在沒有用戶輸入的情況下觸發「點擊」事件

在我的代碼的另一部分,一個單獨的Windows窗體的一部分,我有一個對話框,首先將數據加載到顯示中。執行其他代碼後,按「刷新」可以正確更新數據。

是否有一個簡單的方法讓對話框菜單在完成更改數據後「單擊」刷新鏈接標籤?

使用Visual Studio 2008

回答

9

對於按鍵非常簡單,只需使用:

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

+0

+1的替代PerformClick。 PerformClick是生產代碼中的一種剽竊方法。我認爲它通常應該僅限於測試。 – 2010-07-06 15:50:02

+0

我的錯;我認爲這是一個按鈕,但它實際上是一個鏈接標籤,就像一個按鈕。 有沒有類似的方法? – 2010-07-06 15:53:22

+0

http://msdn.microsoft.com/en-us/library/bb337532.aspx,但正如你所說,一個單獨的方法更好。 – 2010-07-06 16:01:52

5

你可以把PerformClick method。但是,通常最好讓按鈕的Click事件調用您編寫的Refresh方法。菜單也調用該方法。否則,你的菜單取決於在那裏的按鈕。

編輯:

LinkLabel顯式實現IButtonControl。所以,你可以使用:

((IButtonControl)button).PerformClick();

0

你可以用一種方法來refrech顯示屏,bouton_click和對話框調用此方法

public void refrechDate() 
{ 
} 


private void button_click(...) 
{ 
    refrechData(); 
} 
0
private void MyMethod() 
{ 
    // ... 

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

    // ... 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    // refresh code 
} 
相關問題