ctrlLeft
및 ctrlRight
이라는 컨트롤이 두 개 있습니다 (MyCtrl
).2 개 이상 컨트롤 1 개만 활성으로 간주됩니다.
상호 작용을받을 때마다 활성이라고 간주됩니다 (기본적으로 왼쪽). OnDraw를 재정의하고 활성화 된 모양을 약간 사용자 정의합니다.
if (sender is MyCtrl)
{
ctrlActive = (sender as MyCtrl);
ctrlLeft.Active = !(ctrlRight.Active = (ctrlActive == ctrlRight));
}
내가 사용으로 ctrlActive
이 필요 어느 쪽이든 : 현재
나는이 같은 활성 하나에 대한 참조를 저장 내가 거기에있는 모든 MyCtrl
에서 가입 속성 Active
및 이벤트를 다른 것들을 위해서지만, 이것이 내가 서로를 깨닫게하는 가장 좋은 방법인지 궁금합니다.
내가 생각한 또 다른 옵션은 가능한 모든 MyCtrl에 대한 참조를 저장 한 다음 em 전체를 반복하고 나중에 일치하는 발신자와 일치하는 것을 활성화/비활성화하는 것입니다. ctrlMiddle
을 추가하십시오.
내 생각이 잘못 되었나요? 더 좋은 방법이 있습니까? 예를 들어, 라디오 버튼은 비슷한 기능을 어떻게 수행합니까?
편집 : 모든 제안 주셔서 감사합니다.
내 특별한 경우에는 3을 가지고 있어도 컨테이너를 필요로하지 않거나 필요로하지 않습니다. MyCtrl
하나만 활성화되어 있고 2와 2로 연결되는 것을 원하지 않습니다. public static MyCtrl { get; set; }
각 컨트롤에 대해 자신을 확인할 수 있고 필자가 필요로하는 곳에서 업데이트 할 수 있으며 여러 개의 MyCtrl
을 사용할 때 콜렉션을 반복 할 필요가 없다.
누가 이벤트를 시작합니까? – anchandra
@anchandra MyCtrl은 자체 또는 하위 컨트롤 중 하나가 해당 하위 컨트롤을 활성화 할 수있는 상호 작용을 받으면 이벤트를 시작합니다. – Don