C# 在活动选项卡上按F2键

C# 在活动选项卡上按F2键,c#,winforms,C#,Winforms,我有一个复杂的Winform。我正在使用许多选项卡来降低复杂性,但有一个小问题我不知道如何解决 假设我有一个名为“Example.cs”的winform屏幕。我在屏幕上有很多标签。在每个选项卡中,我都有一个名为“F2-保存”的按钮。当用户按下F2按钮时,我捕获并执行以下操作 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.F2)) {

我有一个复杂的Winform。我正在使用许多选项卡来降低复杂性,但有一个小问题我不知道如何解决

假设我有一个名为“Example.cs”的winform屏幕。我在屏幕上有很多标签。在每个选项卡中,我都有一个名为“F2-保存”的按钮。当用户按下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上有许多“保存按钮”,我应该如何找到用户想要触发的按钮的点击事件


谢谢。

如果在
TabControl
中有一组选项卡式文档,这并不意味着每个选项卡都必须有一个保存按钮。在这里,您应该有一个保存按钮,并在单击保存按钮时为当前活动的选项卡拍照。然后,您将能够从该选项卡中选择需要保存的对象。可以使用以下属性从“活动”选项卡拾取活动控件:

public SomeControlToSave ActiveControl
{
    get
    {
        if (tabControl.TabPages.Count == 0)
            return null;
        return tabControl.SelectedTab.Controls.OfType<SomeControlToSave>().FirstOrDefault();
    }
}
public somecontrol保存ActiveControl
{
得到
{
if(tabControl.TabPages.Count==0)
返回null;
返回tabControl.SelectedTab.Controls.OfType().FirstOrDefault();
}
}
另外,不要模拟单击事件来完成工作。创建一个执行requires任务的方法,并从代码隐藏中调用该方法。您还应该在事件处理程序中使用该方法


我希望这会有所帮助。

不要试图模拟单击按钮,只需调用按钮单击事件调用的相同函数即可。此外,您还可以使用
TabControl1.SelectedTab
检查活动选项卡页面,并可以使用
开关执行所需操作