我有两个控件(MyCtrl
)彼此相邻,名为ctrlLeft
和ctrlRight
。2个或更多控件只有1个被认为是有效的
无论何时只要有人接受互动,它就被认为是有效的(默认情况下是左边的)。我重写OnDraw并自定义活动的外观。
目前,我有一个属性Active
和事件,我订阅的所有MyCtrl
在那里我存储到活动一个像这样的引用:
if (sender is MyCtrl)
{
ctrlActive = (sender as MyCtrl);
ctrlLeft.Active = !(ctrlRight.Active = (ctrlActive == ctrlRight));
}
无论哪种方式,我需要有ctrlActive
因为我用它用于其他的事情,但我想知道的是,如果这是最好的方式让他们知道对方?
我想到的另一个选择是存储对每个可能的MyCtrl的引用,然后遍历em全部并激活/禁用与发件人相匹配的一个,以防万一我将来添加ctrlMiddle
。
我的想法是否错误,是否有更好的选择来做到这一点。例如,单选按钮如何实现类似的功能?
编辑:谢谢你的所有建议。
在我的特殊情况下,我不想/需要一个容器,即使我有3 MyCtrl
只有一个仍然可以活动,我不希望它们被“连接”2和2,所以我去了一个public static MyCtrl { get; set; }
每个控件都可以检查自己,我可以更新它在我需要的地方,在我的情况下工作,并摆脱使用多个MyCtrl
时需要循环收集的需求。
谁引发了这个事件? – anchandra 2010-05-17 21:34:56
@anchandra当自身或其中一个子控件接收到任何有资格激活它的交互时,MyCtrl触发该事件。 – Don 2010-05-18 06:39:20