我有兩個控件(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