C# PropertyGrid,默认值,未知颜色
对任何人,对所有人 我的属性网格正在检查一个具有多个颜色属性的类 颜色不是系统颜色,也不是“已知”颜色 显示颜色时,网格中的文本值可能如下所示:C# PropertyGrid,默认值,未知颜色,c#,.net,propertygrid,C#,.net,Propertygrid,对任何人,对所有人 我的属性网格正在检查一个具有多个颜色属性的类 颜色不是系统颜色,也不是“已知”颜色 显示颜色时,网格中的文本值可能如下所示: 209, 175, 171 如何定义[Attribute]属性,以便在选择此颜色时,PropertyGrid了解已选择默认颜色 我试过: [DefaultValue(typeof(Color),"209 , 175, 171")] [DefaultValue(typeof(Color),"209,175,171")] 到目前为止没有运气 谢谢你的帮
209, 175, 171
如何定义[Attribute]属性,以便在选择此颜色时,PropertyGrid了解已选择默认颜色
我试过:
[DefaultValue(typeof(Color),"209 , 175, 171")]
[DefaultValue(typeof(Color),"209,175,171")]
到目前为止没有运气
谢谢你的帮助
这个网站的岩石…它帮助了我比任何其他网站,因为我通过这个项目跋涉
Carson我刚刚在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
控件
当颜色设置为209175171时,它以普通文本显示。如果我更改任何值,它将显示为粗体。类似地,当字符串设置为任意文本时,它是粗体的,当我将其设置为“foo”时,它将显示为普通文本
使用非默认值:
使用默认值:
这里也有同样的问题。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; }
}
}
private void Form1\u加载(对象发送方,事件参数e)
{
MyCar car1=新MyCar();
this.propertyGrid1.SelectedObject=car1;
}
公车{
//*****************************
private Color\ucolor=Color.Red;//这很奇怪……当在字符串中的第一个值后面包含额外的空格时,它就起作用了……换句话说,它起作用了:[DefaultValue(typeof(Color),“209,175,171”)]我永远也不会在一百万年内明白这一点,然后去定制转换器来处理这个问题……这不是:[DefaultValue(typeof(Color),“209,175,171”)]我不知道为什么,我也不在乎……你回答并解决了我的问题,你可以试试颜色。黑色(0,0,0)…当您使用以下命令设置默认值时,它似乎不起作用:[DefaultValue(typeof(Color),“0,0,0”)]。…niether这样做:[DefaultValue(typeof(Color),“Black”)]。…我认为这与黑色是“已知”颜色这一事实有关…对于已知颜色,您也可以使用[DefaultValue(typeof(Color),“Black”)].我尝试了各种空格和/或文本名称的组合(包括“Black”和“0,0,0”)这一切都起作用了。对我来说,它对白色或黑色都不起作用…请记住,默认值不是实际颜色,而是首先通过颜色转换的int。FromARGB…然后再转换一次,不透明度或alpha为255…换句话说,在属性中,我检查var是否为空,如果是空,则对获取实体…示例:_ColorSunDay=Color.FromArgb(255,Color.FromArgb(Default.Color\u SUN\u DAY));…其中Default.Color\u SUN\u DAY=16777215…我无法控制默认值的形式或类型,在本例中为int…坚持使用它。。。