見出し画像

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メソッドで、スクリーン座標からクライアント座標に変換する必要がある。

注意事項

この方法では最上位にあるコントロールを取得するため、コントロールが重なっている場合、下に配置されたコントロールは取得できない。

参考情報

・スクリーン(画面)座標とクライアント座標について


いいなと思ったら応援しよう!