2013-07-15 42 views
4

我有一個複雜的Winform。我使用了許多選項卡來降低複雜性,但有一個小問題,我不知道如何解決。區分F2按鍵激活TAB

可以說我有winform屏幕,名爲「Example.cs」。屏幕上有很多TABS。在每個標籤中,我有一個名爲「F2 - Save」的按鈕。當用戶按下F2鍵,我捕捉並做以下

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == (Keys.F2)) 
    { 
     btn_save.PerformClick(); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 

的,我怎麼找一個按鈕,用戶打算觸發的單擊事件,因爲有許多在同一個「保存按鈕」 WinForm的?

謝謝。

+1

不要嘗試模擬按鈕的點擊,只需調用按鈕的單擊事件調用的相同功能即可。此外,你可以使用TabControl1.SelectedTab檢查活動標籤頁,並採取你想要的任何行動,也許使用'switch' – musefan

回答

3

如果您在TabControl中有一組選項卡式文檔,這並不意味着您必須爲每個選項卡都保存一個按鈕。在這裏,你應該有一個保存按鈕,picup當前有效的標籤點擊保存按鈕。然後,您將能夠從該選項卡中選取需要保存的對象。你可以拿起從活動標籤使用屬性有效控制像

public SomeControlToSave ActiveControl 
{ 
    get 
    { 
     if (tabControl.TabPages.Count == 0) 
      return null; 
     return tabControl.SelectedTab.Controls.OfType<SomeControlToSave>().FirstOrDefault(); 
    } 
} 

另外,不要模擬點擊事件做你的工作。創建一個方法來完成需要的工作,並從你的代碼中調用它。您還應該在事件處理程序中使用該方法。

我希望這會有所幫助。