我有这些功能:
private void setupFocusControls(Control parent)
{
foreach (Control control in parent.Controls)
{
control.GotFocus += HandleFocus;
}
}
private void HandleFocus(object sender, EventArgs e)
{
Control control = (Control)sender;
thisFormName = this.Name;
thisControlName = control.Name.ToString();
if (bHelpSystemActive)
{
bHelpSystemActive = false;
if ((ModifierKeys & Keys.Control) == Keys.Control)
{
HelpSystem hs = new HelpSystem(thisFormName, thisControlName);
hs.ShowDialog();
}
else
{
showTooltipForControl(control, thisFormName);
}
return;
}
}
我在 Form_Load 函数中调用它:
private void Labeller_Load(object sender, EventArgs e)
{
setupFocusControls(this);
fillListBox();
}
它的作用是显示我编写的自定义帮助系统。如果没有点击控制键,那么我将在工具提示中显示信息。如果按下控制键,则显示一个编辑器。真的很简单。
现在,此代码在另一个表单上完美运行,它使用面板作为我的表单控件的容器。问题是,我现在想将此功能添加到单独的表单中。我已经添加了所有代码,但是表单上的所有控件都没有添加 HandleFocus 事件。这种形式和工作形式之间的唯一区别是它使用 splitContainer 作为它的容器。
我的问题是,为什么setupFocusControls
函数没有像我的工作表单上的面板那样循环通过 splitContainer ?而且,我将如何解决它?我显然宁愿没有几个功能来执行这个(我认为的)简单任务......
干杯。