クリックイベントが実行されるコントロールの位置を取得したい
このために私は次のコードを試しました
Xpos = Cursor.Position.X;
Ypos = Cursor.Position.Y;
しかし、これはカーソルの現在の位置を示しています。それから私は次のコードを試しました
MouseEventArgs m = (MouseEventArgs)e;
Xpos=m.X;
Ypos=m.Y;
ただし、この位置は画面全体に対してではありません。
クリックイベントが実行されるコントロールの位置を取得するにはどうすればよいですか?
編集
複製用に提供されたリンクとして、、、、クリックアクションが実行されるポイントの位置を提供します、、、、クリックが実行される制御の位置を提供しません。
あなたのプロジェクトがされている場合WindowsFormApplicaiton
、その後
あなたのコントロールがbutton
スクリーンショットのようである場合
次に、その場所にアクセスして、プライマリ画面とフォーム画面にアクセスすることもできます
以下はコードです
private void button1_Click(object sender, EventArgs e)
{
//This code gives you the location of button1 wrt your primary working screen
Point location = this.PointToScreen(button1.Location);
int x1 = location.X;
int y1 = location.Y;
MessageBox.Show($"X: {x1}, Y: {y1}");
//This code gives you the location of button1 wrt your forms upper-left corner
Point relativeLoc = new Point(location.X - this.Location.X, location.Y - this.Location.Y);
int x2 = relativeLoc.X;
int y2 = relativeLoc.Y;
MessageBox.Show($"X: {x2}, Y: {y2}");
//This code gives you the location of button1 wrt your forms client area
Point relativeLoc1 = new Point(button1.Location.X, button1.Location.Y);
int x3 = relativeLoc1.X;
int y3 = relativeLoc1.Y;
MessageBox.Show($"X: {x3}, Y: {y3}");
}
私が使用した上記のコードでは、必要に応じて代わりにthis
任意のforms
オブジェクトを使用できます
編集:
コントロールがクリックされる場所がわからない場合は、次のようなフォーム内のすべてのコントロールに対して1つのイベントを登録する必要があります。
以下のコードではMouseHover
イベントを使用しましたが、必要に応じて任意のイベントを使用できます
すべてのレジスタの最初のMouseHover
中にあなたのコントロールのすべてのイベントForm1_Load
のような
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
c.MouseHover += myMouseHoverEvent;
}
次に、カスタムMouseHover
イベントは
private void myMouseHoverEvent(object sender, EventArgs e)
{
Control control = sender as Control;
int x = control.Location.X;
int y = control.Location.Y;
MessageBox.Show($"X: {x}, Y: {y}");
}
一度試してみてください
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加