2009-10-29 55 views
0

我正在编写一个应用程序,它允许用户更改文本框或标签的属性,这些控件是用户控件。为每个用户控件创建一个单独的类,实现我希望它们能够更改的属性,然后将这些属性绑定回用户控件,最简单吗?还是有另一种我忽略的方法?C#属性网格

回答

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 2009-10-29 15:20:54

+0

菲利普在这里是一个不同的过程吗? http://www.c-sharpcorner.com/UploadFile/mgold/PropertyGridInCSharp11302005004139AM/PropertyGridInCSharp.aspx 此外,如果您知道如何添加组合框到属性网格? – Nathan 2009-10-29 21:31:45

+0

看看这篇文章: http://www.codeproject.com/KB/tabs/PropertyGridValidation.aspx – 2009-10-30 12:34:14