4

我有一个复杂的 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 上有许多“保存按钮”?

谢谢。

4

1 回答 1

3

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

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

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

我希望这有帮助。

于 2013-07-15T09:06:20.480 回答