2009-09-23 6 views
1

나는 도구 상자에 단추가있는 아주 기본적인 응용 프로그램이 있습니다. 버튼을 클릭하면 적절한 사용자 정의 컨트롤이 List<Control>에 추가됩니다. 그런 다음 TabPages 또는 mdi 형식을 만드는 목록을 반복하고 사용자 컨트롤을 자식으로 사용합니다. 이러한 사용자 컨트롤에 대한 인터페이스를 만들었으므로 특정 변수가 포함되도록 할 수 있습니다 ... 특히 부모 TabPage 또는 mdi 폼의 텍스트에 대한 변수.. NET 사용자 정의 컨트롤

컨트롤에 사용자 정의 컨트롤을 전달할 때 인터페이스에 정의 된 변수를 참조 할 수 없습니다. 이 문제를 해결하는 가장 좋은 방법은 무엇인지 궁금하네요. "Control"을 상속하고 인터페이스를 구현하는 새 클래스를 만들어야하며 내 사용자 컨트롤을이 새로운 유형의 인스턴스로 변경해야합니까?

나는 당신은 당신의 적절한 UserControl을에 당신의 방법에 Control 매개 변수를 캐스팅해야하고, 올바른 종류인지 확인한 것입니다 C#을

+2

필자는 컨트롤 + 인터페이스의 용 량을 상속받은 클래스와 함께 갈 것이므로 문제가 해결 될 것입니다. – ParmesanCodice

답변

4

을 사용하고 있습니다.

public void ProcessMyUserControl(Control control) { 
    MyUserControl myControl = control as MyUserControl; 
    if (myControl == null) 
    { 
     // This was a different type of control, not your user control... 
     return; 
    } 
    myControl.MyMethod(); 
} 

List<MyUserControl> 대신 List<Control>로 직접 목록을 저장하는 것이 더 간단 할 수 있습니다 그런 다음 API에 액세스 할 수있을 것입니다. 그런 다음 클래스/인터페이스의 메서드를 직접 전달하십시오.