2009-10-29 2 views
0

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

ответ

1

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

Ах, я вижу, я дам этому выстрел. Спасибо. – Nathan

+0

Филипп - это другой процесс, чем тот, который здесь? http://www.c-sharpcorner.com/UploadFile/mgold/PropertyGridInCSharp11302005004139AM/PropertyGridInCSharp.aspx Кроме того, если вы знаете, как я могу добавить поле со списком в сетку свойств? – Nathan

+0

Взгляните на эту статью: http://www.codeproject.com/KB/tabs/PropertyGridValidation.aspx –

Смежные вопросы