2009-03-23 7 views
3

시각 상속을 사용하고 디자인 타임에 상속 된 컨트롤의 속성을 변경하는 방법이 있는지 궁금합니다. 폼 디자이너에서 가능하면 좋습니다. 그렇지 않다면, 디자이너 코드에서.디자인 타임에 상속 된 컨트롤의 속성을 변경할 수 있습니까?

나는 내 컨트롤을 기본 클래스에서 Public으로 선언했습니다. 자식 폼 코드에서는 액세스 할 수 있지만 폼 디자이너에서는 액세스 할 수 없습니다. 이건 불가능한가요?

+0

아직 관심이있는 사람들에게 잘 설명되어 있습니다. http://stackoverflow.com/a/207549/908336 –

답변

-1

컨트롤의 가시성을 변경해야합니다. 컨트롤 속성 Modifiers를 public에두고 프로젝트를 다시 컴파일하면 상속 된 컨트롤의 속성을 변경할 수 있습니다.

+0

특정 컨트롤에서만 작동하는 것으로 보이지만 전체가 아닌 것은 이유를 이해할 수 없습니다. 내 기본 폼에는 그 안에 ComboBox, ToolStrip 및 DataGridView 인 TabControl이 있습니다. 모두 Public으로 설정되어 있지만 ComboBox의 속성 만 수정할 수 있고 다른 두 컨트롤은 수정할 수 없습니다. –

2

일부 컨트롤에서만 작동하는 것으로 보이지만 전체가 아닌 것은 이유를 이해할 수 없습니다. 내 기본 폼에는 그 안에 ComboBox, ToolStrip 및 DataGridView 인 TabControl이 있습니다. 모두 Public으로 설정되어 있지만 ComboBox의 속성 만 수정할 수 있고 다른 두 컨트롤은 수정할 수 없습니다.

왜 이런지 모르겠습니다.

+0

ToolStrip 및 DGV 디자이너는이 기능을 지원하지 않습니다. –

2

Visual Studio에는 시각적 상속을위한 제한 사항이 있습니다. 불행하게도, 파생 형태가 된 UserControls 컨트롤 등 기본, 즉 DataGridViewRows, TOOLSTRIPS, ListViewColumns, 내 컬렉션을 포함 수정할 수 없습니다 \

Microsoft Bug Report

특정 상황에서이 주위에 방법이 있습니다. 수정하려는 컨트롤 (DataGridView.BackgroundColor 또는 ListView.Columns)의 정확한 속성을 표시하는 기본 클래스에 보호 된 속성을 만듭니다.

기본 양식 은 필요한 구성 요소를 변경하려면이 속성에 액세스 할 수 있어야합니다. ListView.Columns 및 DataGridView.rows에 대해이 작업을 성공적으로 완료했지만 ToolStrip.Items가 작동하지 않습니다.

+0

나는 같은 상황에 빠졌지 만, 버튼에 대해서는 작동했지만 툴 스트라이프에는 작동하지 않았습니다. – Thunder

관련 문제