在 .NET v4 上使用 VS2010 我有以下问题。
我创建了两个自定义控件,Cell 和 Board,我想使用 Cell 控件来捕获一些事件并显示一些数据。我需要捕获的最重要的事件是 Click 事件。
当自定义控件没有子控件项时,这不是问题。在使用 Cell 的级别上,我可以毫无问题地将事件处理程序绑定到 Click 事件。
public partial class Cell : UserControl
{
....
}
public partial class Board : UserControl
{
private void InitializeComponent()
{
...
this.Cell99.Click += new System.EventHandler(this.Cell_Click);
...
}
}
Cell 控件相当小(大小约为 50x50 像素),我希望它显示的内容之一是尽可能大的整数值(大小约为 50 x 50 像素;-) 这样做没问题,我想要为此使用标签控件。
一旦我向 Cell 添加另一个(例如标签)控件,它就不再可以看到某些事件,因为子事件正在获得“第一权利”。对于 Label 控件覆盖的像素,它将捕获我想用 Cell 控件而不是 Label 控件处理的 Click 事件。
如果它只是我想在 Cell 中使用的一个控件,则解决方案是将事件从 Label 控件链接到 Cell 控件。但是我至少有 10 个不同的(标签)控件需要进入 Cell 以显示我拥有的所有信息。将所有控件的所有事件转发给它的父级对我来说有点麻烦。(除了容易出错和其他错误。)
为用户控件中的子控件禁用事件捕获的正确方法是什么?
如前所述,我曾想过将事件从孩子转发给父母,但现在拒绝了。
然后我想到了不使用控件来显示数据,而是生成一个包含信息的位图并将其用作背景。我……不期待!
最后,我提出了一个想法,即在所有其他控件之上放置一个额外的控件,并将捕获的事件转发给父级。这可能是最简单的继续方式。
不知何故,我认为必须有更好的方法来解决这个问题,但是如何呢?
欢迎任何建议。