[英]Disabling child control events
我的自定義控件的子控件阻礙了我的自定義控件中的鼠標事件。 我已經研究了可接受的答案以及該主題底部的答案...
我還沒有讓他們工作(最底層的答案對我來說似乎最直接)。 但是我真的想完全禁用它們的事件。 我有一個pictureBox和一個標簽,不需要與任何一個子控件進行交互。 有沒有辦法禁用它們,以免它們干擾我的自定義控件的事件?
編輯:
我正在使用自定義控件來收集和處理許多東西,並將它們用作屬性。 當我單擊它時,我需要訪問屬性。 當事件發生在子控件上時,我無權訪問自定義控件的屬性。 以下代碼是我的形式...
public void Form1_MouseDown(object sender, MouseEventArgs e)
{
var myControl = sender as SubstanceViewer;
richTextBox1.Text = myControl.substanceInfo;
}
因此,我將需要訪問父控件的屬性。
如果您需要由子控件捕獲的事件通常由自定義控件本身處理,則只需在運行時在自定義控件的構造函數中連接這些事件即可。
例如,如果您需要PictureBox和Label的MouseMove()事件來觸發UserControl的已連接事件:
public partial class SomeUserControl : UserControl
{
public SomeUserControl()
{
InitializeComponent();
this.pictureBox1.MouseMove += SomeUserControl_MouseMove;
this.label1.MouseMove += SomeUserControl_MouseMove;
}
private void SomeUserControl_MouseMove(object sender, MouseEventArgs e)
{
}
}
但是請注意,由於不同的控件會觸發同一個處理程序,因此您需要考慮到這一點。 例如,上面處理程序中的eX
和eY
值將相對於源控件。
*您也可以在設計時使用IDE本身將這些事件關聯起來,但是我認為代碼可以更好地說明該解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.