マウスの座標から、その下にあるコントロールを取得するメソッドなんだけど・・・。
これ、対象となるコントロールのVisibleがTrueじゃないと動かないっぽい。
今回の作業中に直接フォーカス移動させるときにぶつかったんだけど、とりあえず自前で同じような動きするメソッドを用意してみた。
PublicFunction GetChildControl(ByVal pt As System.Drawing.Point) As System.Windows.Forms.Control
For Each child As System.Windows.Forms.Control In Me.Controls
Dim childRectAs System.Drawing.Rectangle = New System.Drawing.Rectangle(child.Left, child.Top, child.Width, child.Height)
If childRect.Contains(pt.X, pt.Y)Then Return child
Next
Return Nothing
EndFunction
マウスの座標って、フォームとかのイベントで取得しているのはクライアント座標なので処理的にはたいしたことなかったかな。
まぁこれがスクリーン座標だったとしても、親Formで一度変換かましてあげればいいだけなんだけどね。
とりあえずの動きとしてはこれでいいので、後は除外されるコントロールを指定できるようにしておかないと・・・。
0 件のコメント:
コメントを投稿