C # Property Grid
-
10-07-2019 - |
Вопрос
Я пишу приложение, которое позволяет пользователям изменять свойства текстового поля или метки, и эти элементы управления являются пользовательскими. Будет ли проще создать отдельный класс для каждого пользовательского элемента управления, который реализует свойства, которые я хочу, чтобы они могли изменять, а затем привязать их обратно к пользовательскому элементу управления? Или есть другой метод, который я пропускаю?
Решение
Создайте пользовательский атрибут и отметьте свойства, которые пользователь хочет отредактировать, с помощью этого атрибута. Затем настройте 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