Visual Studios 2005 - Очистить пользовательские свойства в дизайнере / окне свойств - PullRequest
1 голос
/ 13 января 2009

Утро всем,

Я создал пользовательский элемент управления со свойством изображения. Это свойство изображения является приватной переменной Image для get / set.

Может кто-нибудь сказать мне, как я включаю это get / set для очистки свойства от дизайнера?

т.е. если я добавлю изображение в стандартный PictureBox, я могу нажать Del, чтобы удалить изображение из PictureBox. Как я могу воспроизвести это поведение на моем собственном пользовательском элементе управления?

1 Ответ

3 голосов
/ 13 января 2009

На самом простом уровне, DefaultValueAttribute должен выполнить работу:

private Bitmap bmp;
[DefaultValue(null)]
public Bitmap Bar {
    get { return bmp; }
    set { bmp = value; }
}

Для более сложных сценариев вы можете попробовать добавить метод Reset ; например:

using System;
using System.Drawing;
using System.Windows.Forms;
class Foo {
    private Bitmap bmp;
    public Bitmap Bar {
        get { return bmp; }
        set { bmp = value; }
    }
    private void ResetBar() { bmp = null; }
    private bool ShouldSerializeBar() { return bmp != null; }
}
static class Program {
    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Form form = new Form();
        PropertyGrid grid = new PropertyGrid();
        grid.Dock = DockStyle.Fill;
        grid.SelectedObject = new Foo();
        form.Controls.Add(grid);
        Application.Run(form);
    }
}
...