C# Windows Formsメモ:ヘルプボタンを押してコントロールを選択した際、コントロールの情報を取得したい
方法:GetChildAtPointメソッドを使う
GetChildAtPointメソッドにより、マウスの位置にあるコントロールを取得する。
コード例
ヘルプボタン押下後(マウスカーソルの形が変わった後)、コントロール上でクリックした際に、メッセージボックスでコントロールの名前を表示する。
private void Form1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
// スクリーン座標をクライアント座標に変換
Point clientPoint = this.PointToClient(hlpevent.MousePos);
// マウスの現在位置にあるコントロールを取得
Control control = this.GetChildAtPoint(clientPoint);
if (control != null)
{
// コントロール上でクリック時に、コントロールの名前(Name)を表示する
MessageBox.Show(control.Name);
}
}
※ hlpeventからマウスの現在位置を取得できるが、そのままではGetChildAtPointメソッドに渡すことができず、PointToClientメソッドで、スクリーン座標からクライアント座標に変換する必要がある。
注意事項
この方法では最上位にあるコントロールを取得するため、コントロールが重なっている場合、下に配置されたコントロールは取得できない。
参考情報
・スクリーン(画面)座標とクライアント座標について