서로 다른 종류의 입력을위한 것이기는하지만 모두 동일한 모양과 일반적인 동작을 공유해야하는 컨트롤을 만들고 있습니다. 그래서 UserControl에서 상속 한 BaseClass를 만들었고 모든 컨트롤은 BaseClass에서 상속받습니다.winforms 디자이너에서 상속 된 컨트롤에 액세스하는 방법
그러나 TableLayoutPanel과 같은 디자이너에서 BaseClass 컨트롤을 추가하면 상속 된 클래스를 디자인 할 때 해당 클래스에 액세스 할 수 없습니다. TableLayoutPanel을 볼 수 있지만, 비록 그가 "protected"라고하더라도 디자이너를 통해 컨트롤을 수정하거나 컨트롤을 넣을 수는 없습니다. 코드를 사용하여 액세스하는 데 문제가 없지만 디자이너를 사용하는 기능을 잃고 싶지는 않습니다.
지금은 단순히 BaseClass에서 모든 컨트롤을 제거하고 상속 된 클래스의 레이아웃과 모든 공통 컨트롤을 추가 한 다음 참조를 사용하여 BaseClass 내부에서 컨트롤을 조작합니다. 하지만 그건 전혀 만족스럽지 않습니다. 상속 된 보호 된 멤버 컨트롤로 디자이너를 작동시키는 방법이 있습니까?
환경 : C#을 .NET 3.5, 비주얼 스튜디오 2008
편집 SLaks의 제안에 대답합니다. 나는 재산을 세우려고 애썼지 만, 나는 그것들을 사용하는 데 익숙하지 않았지만 그것은 효과가없는 것처럼 보인다. 여기 내가 시도한 코드입니다 :
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public TableLayoutPanel TableLayoutPanel1
{
get { return tableLayoutPanel1;}
set { tableLayoutPanel1 = value;}
}
}
public partial class UserControl2 : UserControl1
{
public UserControl2()
{
InitializeComponent();
}
}
TableLayoutPanel 자체에서 상속받을 수 있습니까? – SLaks
물론, winforms 컨트롤에서 상속받은 자신 만의 컨트롤을 만들 수 있습니다. 나는 몇 가지 컨트롤을 구현하기 위해 이것을했다. 그러나 그것은 제가 여기서 달성하고자하는 것이 아닙니다. 내부에 몇 가지 기본 컨트롤이있는 컨트롤을 사용하려고합니다. 레이블과 같은 일부 컨트롤이있는 tablelayoutpanel과 상속 된 클래스가 선택한 컨트롤로 채워야하는 여러 빈 공간이 있습니다. 최종 목표는 모든 theses 컨트롤을 도구 상자에 추가 한 다음 디자이너로 드래그 앤 드롭하여 많은 컨트롤이 있지만이 컨트롤 전체에서 일반적인 동작/레이아웃이있는 폼을 만드는 것입니다. – Ksempac
그리고 btw, Winform 컨트롤을 상속하면 일반적으로 컨트롤 자체를 다시 디자인하지 않고 특정 동작을 구현하는 것이기 때문에 디자이너가 잘립니다. – Ksempac