1

对任何人……对所有人,

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

颜色不是系统颜色,也不是“已知”颜色......

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

209, 175, 171

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

我试过了:

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

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

谢谢你的帮助...

这个网站很震撼......当我在这个项目中跋涉时,它对我的​​帮助比任何其他网站都多......

卡森

4

2 回答 2

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”时,它会以普通文本显示。

使用非默认值:

替代文字

使用默认值:

替代文字

于 2010-01-09T23:20:30.063 回答
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; }
        }

    }

在此处输入图像描述

它对我有用,我不知道问题到底出在哪里。

于 2016-02-04T20:27:26.647 回答