2009-01-13 40 views
1

早上全部,Visual Studios 2005 - 在设计器/属性窗口中清除自定义属性

我已经使用图像属性创建了自定义控件。该图像属性是获取/设置为私有图像变量。

任何人都可以告诉我如何启用获取/设置以清除设计器的属性?

I.e.如果我添加一个图像到一个标准的PictureBox,我可以打Del来清除PictureBox中的图像。我如何在我自己的自定义控件上复制这种行为?

+0

“世界范围”的网络上没有早晨,也没有上午,晚上或晚上。 – AnthonyWJones 2009-01-13 11:13:42

回答

3

最简单地说,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); 
    } 
}