PictureBoxとLabelの 2 つだけを含む Form があります。
ピクチャ ボックスにマウス クリック イベント ハンドラを追加しました。
this.pictureBox1.MouseClick += picture_MouseClick;
ハンドラー内で、マウス クリックの位置がラベルの境界内にあるかどうかを確認する必要があります。これを行うために、マウス イベントの場所を使用して、その場所がラベルの境界内にあるかどうかを確認しています。
private void picture_MouseClick(object sender, MouseEventArgs e)
{
if (label1.Bounds.Contains(e.Location))
{
MessageBox.Show("FOUND YOU!");
}
}
十分に簡単に思えるので、これが機能することを期待していましたが、表示されている MessageBox につながるクリック位置 (画像のオレンジ色のボックス) は、ラベルの右下にオフセットされています。
これは、マウス イベントが PictureBox に対して相対的であり、Label 境界が Form に対して相対的であるためですか? それともその逆?
ちなみに、画像に表示されているラベルは実行時には非表示になっています。ユーザーが特定の場所をクリックしたかどうかを知る「ハック」方法としてラベルを使用しているだけです。
public Form1()
{
InitializeComponent();
this.label1.Visible = false;
this.pictureBox1.MouseClick += picture_MouseClick;
}
(ラベルの幅を eX から、ラベルの高さを eY から差し引いてみましたが、うまくいきませんでした。)
ありがとうございました、
1月