私はこれらの機能を持っています:
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 をループしないのはなぜですか? そして、どうすればそれを修正できますか?私は明らかに、この(私が思っていた)単純なタスクを実行するためのいくつかの機能を持っていません...
乾杯。