PropertyGrid,DefaultValue,未知颜色

时间:2010-01-09 23:06:24

标签: c# .net propertygrid

To Any ... To All,

我的属性网格正在检查具有多个颜色属性的类......

颜色不是系统颜色,也不是'已知'颜色......

显示颜色时,网格中的文本值可能如下所示:

209, 175, 171

如何定义[属性]属性,以便在选择此颜色时,PropertyGrid可以理解已选择默认颜色?

我试过了:

[DefaultValue(typeof(Color),"209 , 175, 171")]
[DefaultValue(typeof(Color),"209,175,171")]

到目前为止没有运气......

感谢您的帮助......

这个网站摇滚......当我跋涉这个项目时,它比任何其他网站都帮助了我......

卡森

2 个答案:

答案 0 :(得分:2)

我刚刚在Windows窗体应用程序中尝试了这个,它运行正常。这是我的整个应用程序:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {
        propertyGrid1.SelectedObject = new Foo();
    }
}

public class Foo {
    [DefaultValue("foo")]
    public string MyString { get; set; }

    [DefaultValue(typeof(Color), "209 , 175, 171")]
    public Color MyColor { get; set; }
}

我的表单是一个默认表单,上面有PropertyGrid控件。

当颜色设置为209,175,171时,它以正常文本显示。如果我更改任何值,它会显示为粗体。类似地,当字符串设置为任何文本时,它是粗体,当我将其设置为“foo”时,它以正常文本显示。

使用非默认值:

alt text

使用默认值:

alt text

答案 1 :(得分:0)

这里的问题相同。 DefaultValue(typeof(Color)对我不起作用。

我必须这样做:

private void Form1_Load(object sender, EventArgs e)
    {
        MyCar car1 = new MyCar();
        this.propertyGrid1.SelectedObject = car1;
    }

    public class MyCar{
        //*****************************
        private Color MyColor_ = Color.Red;//<------------------------ Here
        //*****************************
        public Color MyColor
        {
            get { return MyColor_; }
            set { this.MyColor_ = value; }
        }

        private String Id_;
        public String Id
        {
            get { return Id_; }
            set { this.Id_ = value; }
        }

    }

enter image description here

它对我有用,我不知道问题究竟在哪里。