我有一个复杂的Winform。我使用很多标签来降低复杂性,但是有一个小问题,我不知道如何解决。
让我们说我有一个名为“Example.cs”的winform屏幕。我在屏幕上有很多TABS。在每个标签中,我有一个名为“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);
}
我应该如何找到用户想要触发的按钮的click事件,因为同一个WinForm上有很多“保存按钮”?
感谢。
答案 0 :(得分:3)
如果TabControl
中有一组选项卡式文档,这并不意味着您必须为每个选项卡都设置一个保存按钮。在这里,您应该有一个保存按钮,并在单击保存按钮时将图片显示为当前活动的选项卡。然后,您将能够从该选项卡中选择需要保存的对象。您可以使用
public SomeControlToSave ActiveControl
{
get
{
if (tabControl.TabPages.Count == 0)
return null;
return tabControl.SelectedTab.Controls.OfType<SomeControlToSave>().FirstOrDefault();
}
}
此外,不要模拟点击事件来完成您的工作。创建一个执行require作业的方法,并从后面的代码中调用它。您还应该在事件处理程序中使用该方法。
我希望这会有所帮助。