Tag: 属性网格

PropertyGrid没有注意到代码中的属性已更改?

我有一个Winform应用程序,它使用颜色突出显示某些事物。 我想让用户改变’他们’的颜色。 作为练习,我想我会创建一个类的实例,具有颜色属性,并将其分配给属性网格(以获得一个漂亮的编辑器) 。 这似乎工作得很好,但我想我想让用户重置颜色(在他们摆弄并将它们设置为20个米色)之后 。 所以,我在表单中添加了一个“重置”按钮,它将我的对象的颜色属性设置回默认值。 但是,它似乎在设置我的对象的属性时,属性网格不会改变。 如果在重置后,我执行属性网格“刷新”,它具有重置颜色。 我假设属性网格不知道底层对象已被更改? 在这种情况下是否缺少某些东西,或者我应该接受它并在重置对象时调用Refresh方法? 谢谢 ( 这里非常相似的问题) public partial class Form1 : Form { public Form1() { InitializeComponent(); this.propertyGrid1.SelectedObject = new Colours(); } private void button1_Click(object sender, EventArgs e) { Colours colours = this.propertyGrid1.SelectedObject as Colours; colours.Reset(); } } public partial class Colours : INotifyPropertyChanged { public event […]

定制,复杂,动态reflection解决方案 – C#

我有很多我正在使用的自定义类,我将解释并发布示例。 在解释他们所做的一切之后,我将尝试清楚地描述我的错误发生的条件。 首先,我使用PropertyGrid来显示几种不同类型对象的属性。 因为PropertyGrid的默认绑定不是我想要的描述,我创建了一些自定义类,我将其称为“显示”类。 这些Display类是通过传入一个对象然后创建属性来构造的,这些属性返回格式良好的字符串以及传入的真实对象的公共属性(在某些情况下是方法)的描述。 我将用一些简短的示例代码演示这个: 以下是我想在PropertyGrid中显示的对象示例: public class Joint { public Joint(…) {…} //properties public string Name { get; set;} public CustomObject CC { get; set;} public List Custom List { get; set;} } 字符串属性“Name”在PropertyGrid中显示正常但是CustomObject和List没有以对用户友好的方式显示。 所以我尝试通过编写这个类来创建一个解决方案: public class DisplayJoint { private Joint _jnt; public DisplayJoint(Joint jnt) { _jnt = jnt; } //properties public string […]