2014-06-16 4 views
0

C#의 새로운 기능입니다. 나는 최선을 다해 문제를 설명하려고 노력할 것이다.다형성을 사용하여 사용자 지정 도구 속성에 액세스

사용자 지정 도구에서 만든 속성을 사용하는 데 어려움을 겪고 있습니다. 내 GUI에 이러한 도구가 많아서 속성을 명시 적으로 입력하는 것만 큼 간단하지가 않습니다. 이러한 컨트롤은 목록에 포함되어 있으며 격리 된 별도 솔루션 프로젝트의 일부인 해당 속성에 쉽게 액세스 할 수 있기를 원합니다.

item.Code = .... // calculation 
    item.MacAddress = .... // this will increment in hex depending on how many controls I have Enabled 

그래서 '항목'의 각 인스턴스가 가지고있는 :

List<Control> controlList = new List<Control>(); 
private void btnStart_Click(object sender, EventArgs e) 
{   
    foreach (var item in controlList) 
    { 
     if (item.Enabled) 
     { 
      custom_control1.Code = "8917237"; 
      custom_control1.MacAddress = "000000000001"; 
     } 
    } 

// do other stuff based on the above credentials 

} 

내가 내 if 문에서 다음을 수행 할 수 있도록하고 싶습니다 : 여기에 지금까지 무엇을 내 예입니다 for 루프 또는 무언가로 변경할 수있는 사용자 정의 컨트롤 속성. 참고 : 각 제어 도구 항목에는 계산에 따라 다른 MAC 및 코드가 있습니다.

어떻게 구현해야할지 모르겠다. 내 주요 문제는 Visible, Enable 등의 기본 속성 목록을 볼 수 있지만 내 사용자 지정 속성은 볼 수 없다고 생각합니다. 같은 것을하는 것 : controlList[0].Code도 같은 문제로 인해 도움이되지 않습니다. 나는 분명히 여기 뭔가를 오해하고있다.

미리 도움을 청하십시오.

+0

의 ... 단순히 컨트롤'implement'하자,'interface'에 모든 '공유'속성과 메소드를 추가 인터페이스 (아마 오버라이드 (override) 된 abstract 기본 클래스를 가짐). 그런 다음 controlList 루프에서 컨트롤을 인터페이스 유형 – ChristopheD

+0

으로 캐스팅하십시오. "custom tool"이라고 말하면 Control의 하위 클래스를 만들었습니까? –

+0

@ChristopheD 도움에 감사드립니다. 당신이 내 문제를 이해 한 것처럼 들리지만 나는 그것을 이해할 수있는 수준이 아니며 대답 절차를 구현합니다. 시간이 있다면 배울 수있는 예제를 제공 할 수 있습니까? 아마 그 시점에서 구현할 수 있습니다. – Shen

답변

0

목록 개체에서 직접 사용자 지정 속성에 액세스하려면 목록이 Control이 아닌 사용자 지정 클래스의 목록이어야합니다. 그래서, 내가 제대로 질문을 읽어 대신하는 경우

List<Control> controlList = new List<Control>(); 

사용

List<MyCustomClass> controlList = new List<MyCustomClass>(); 
+0

이 작품! List 으로 내 사용자 정의 속성을 가져올 수 있습니다. 고맙습니다. – Shen

관련 문제