【发布时间】:2013-11-30 09:08:21
【问题描述】:
我的自定义控件的子控件阻碍了我的自定义控件中的鼠标事件。我已经完成了接受的答案和这个线程底部的答案......
exposing-events-of-underlying-control
我还没有让他们工作(底部的答案对我来说似乎最直接)。但实际上我想完全禁用它们的事件。我有一个图片框和一个标签,我不需要与任何一个子控件进行交互。有没有办法禁用它们,这样它们就不会干扰我的自定义控件的事件?
编辑:
我正在使用自定义控件来收集和处理许多内容并将它们作为属性提供。当我单击它时,我需要访问属性。当事件发生在子控件上时,我无权访问我的自定义控件的属性。以下代码在我的表单中...
public void Form1_MouseDown(object sender, MouseEventArgs e)
{
var myControl = sender as SubstanceViewer;
richTextBox1.Text = myControl.substanceInfo;
}
所以我需要访问父控件的属性。
【问题讨论】:
-
所以你根本不想要用户控件中的事件?
-
您可能会发现这个问题的公认答案很有用:stackoverflow.com/questions/5102982/…
-
不,我只想禁用子控件上的事件,它们会干扰我自定义控件上的事件。
-
那么就不要使用 PictureBox 和 Label。它们非常浪费,在 OnPaint() 方法中只需要两行代码就可以得到相同的结果。 e.Graphics.DrawImage() 和 TextRenderer.DrawText()。问题解决了。
-
你能给我一个覆盖 OnPaint() 方法的例子吗?
标签: c# events user-controls