Frage

Ich schreibe eine Anwendung, die auf geht Anwender die Eigenschaften eines Textfeld oder Label und diese Kontrollen sind Bedienelemente ändern können. Wäre es am einfachsten, eine eigene Klasse für jede Benutzersteuerung zu schaffen, die die Eigenschaften implementiert ich sie möchte in der Lage zu ändern, und dann diejenigen, binden an die Benutzersteuerung zurück? Oder gibt es eine andere Methode, die ich mit Blick auf bin?

War es hilfreich?

Lösung

Erstellen Sie eine benutzerdefinierte Attribute, und markieren Sie die Eigenschaften, die Sie dem Benutzer mit diesem Attribut bearbeiten möchten. Dann stellen Sie den BrowsableAttribute Eigenschaft auf Eigentum Raster zu einer Sammlung nur Ihre benutzerdefinierten Attribute enthalten:

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;
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top