フォームの UserControl のクリック イベントを発生させることができなかった場所について尋ねたこの前の質問を参照してください。
コントロールを設定する方法は、コントロール自体のサイズを 50、20 に設定することです。次に、パネルのサイズを 25、20 に設定して、右側にドッキングします。UserControl 自体のコードでは、コントロールの背景または「スイッチ」として機能するパネルがクリックされるたびに、次のコードが起動されます。
private void toggleClick(object sender, EventArgs e) {
if (toggleStatus) { // set to "on"
this.BackColor = Color.Red;
this.pnlSwitch.Dock = DockStyle.Left;
toggleStatus = false;
} else { // set to "off"
this.BackColor = Color.Green;
this.pnlSwitch.Dock = DockStyle.Right;
toggleStatus = true;
}
}
これはうまく機能し、毎回オフになります。ただし、UserControl をフォームに配置し、クリック イベントをこのメソッドに関連付けようとしました。
private void toggleSoundClick(object sender, EventArgs e) {
MessageBox.Show("Test");
}
コントロールの背景をクリックすると、これが起動し、すべてが正常に機能します。ただし、「スイッチ」として機能するパネルをクリックすると、フォームのクリック イベントは発生しません (ただし、UserControl 自体のクリック イベントは発生しますが、これは問題ではありません)。これが CSS の z-indexing のようなものであることはある程度理解できますが、それでもコントロール内のクリック イベントが発生しない理由がわかりません。
私の質問は、どうすればこの種の動作を回避できるでしょうか?
編集また、フォーム内のクリック イベントの動作を UserControl 内のクリック イベントに統合することもできません。フォームにこれらのコントロールがいくつかあり、どれがクリックされるかによってすべての動作が異なります。