簡體   English   中英

禁用兒童控制事件

[英]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)
    {

    }

}

但是請注意,由於不同的控件會觸發同一個處理程序,因此您需要考慮到這一點。 例如,上面處理程序中的eXeY值將相對於源控件。

*您也可以在設計時使用IDE本身將這些事件關聯起來,但是我認為代碼可以更好地說明該解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM