Windowsフォームアプリケーションを作成しましたが、コントロールのキャプチャプロパティから異常な動作が発生します。空白のフォームでControl.Captureは常にtrueですか?
、「LABEL1」と呼ばれる単一のラベルおよびコード
public Form1()
{
InitializeComponent();
label1.MouseDown += pictureBox1_MouseDown;
}
void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
Debug.WriteLine(label1.Capture);
label1.Capture = !label1.Capture;
Debug.WriteLine(label1.Capture);
}
で私が最初にWriteLineメソッドは、常にときに、第2の1は常に「偽」と言い、「真の」と言うことを、観察ボタンをクリックします。複数回クリックした場合でも
代わりにlabel1.Capture = true
を使用しても、ラベルはその国境の外にあるクリックには反応しません。
「キャプチャ」プロパティの予想される動作を誤解していますか?私は初期値がfalseであることを期待していました。ラベルは最初のクリック後、外に出るクリックに反応しないようにしました。そして、ラベルはすべてのマウスクリックに反応します。
2つのコントロールで同じイベントハンドラを使用すると混乱することがあります。ラベルをクリックすると、確かにTrueになります。そして確かに、偽、ピクチャボックスをクリックします。 Winformsは、キャプチャプロパティを使用して確実にClickイベントを生成し、MouseDownイベントを発生させる前にオンにします。コントロールの境界の外側にドラッグした後にマウスを離したときにClickイベントが*発生しない*ようにする必要があります。自分自身でキャプチャプロパティを使用すると(「外部のクリックに反応する」のように)動作しない可能性があります。 –