2013-07-15 57 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(); 
    } 
} 

另外,不要模拟点击事件做你的工作。创建一个方法来完成需要的工作,并从你的代码中调用它。您还应该在事件处理程序中使用该方法。

我希望这会有所帮助。