문제
사용자가 텍스트 상자 또는 레이블의 속성을 변경할 수있는 응용 프로그램을 작성하고 있으며 이러한 컨트롤은 사용자 컨트롤입니다. 각 사용자 컨트롤에 대해 별도의 클래스를 만드는 것이 가장 쉬운 속성을 구현 한 다음 변경할 수있는 속성을 구현 한 다음 사용자 컨트롤에 다시 바인딩 할 수 있습니까? 아니면 간과하는 또 다른 방법이 있습니까?
해결책
사용자 정의 속성을 만들고 사용자 가이 속성으로 편집 할 속성을 태그하십시오. 그런 다음 설정하십시오 Browsableattribute 사용자 정의 속성 만 포함 된 컬렉션에 속성 그리드의 속성 :
public class MyForm : Form
{
private PropertyGrid _grid = new PropertyGrid();
public MyForm()
{
this._grid.BrowsableAttributes = new AttributeCollection(new UserEditableAttribute());
this._grid.SelectedObject = new MyControl();
}
}
public class UserEditableAttribute : Attribute
{
}
public class MyControl : UserControl
{
private Label _label = new Label();
private TextBox _textBox = new TextBox();
[UserEditable]
public string Label
{
get
{
return this._label.Text;
}
set
{
this._label.Text = value;
}
}
[UserEditable]
public string Value
{
get
{
return this._textBox.Text;
}
set
{
this._textBox.Text = value;
}
}
}
제휴하지 않습니다 StackOverflow