C # Property Grid - PullRequest
       26

C # Property Grid

0 голосов
/ 29 октября 2009

Я пишу приложение, которое позволяет пользователям изменять свойства текстового поля или метки, и эти элементы управления являются пользовательскими. Будет ли проще создать отдельный класс для каждого пользовательского элемента управления, который реализует свойства, которые я хочу, чтобы они могли изменять, а затем привязать их обратно к пользовательскому элементу управления? Или есть другой метод, который я пропускаю?

1 Ответ

1 голос
/ 29 октября 2009

Создайте пользовательский атрибут и отметьте свойства, которые вы хотите, чтобы пользователь редактировал, этим атрибутом. Затем установите для свойства 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;
        }
    }
}
...