我有一个类,我正在使用具有以下属性的属性网格查看:
private Color _borderColor = Color.Black;
[Browsable(true)]
[Category("Appearance")]
[DisplayName("Border Color")]
[Description("The color of the border.")]
[DefaultValue(typeof(Color), "Black")]
public virtual Color BorderColor
{
get
{
return _borderColor;
}
set
{
if (_borderColor != value)
{
_borderColor = value;
Invalidate();
}
}
}
我在使用属性网格更改此属性时遇到各种间歇性问题。
最初,我能够打开下拉弹出窗口。但是当我选择一种颜色时,它不会改变属性。调试时,它甚至不调用“set”访问器。此时,即使我输入颜色的名称并回车,它也不会改变。
如果我取消选择对象(将属性网格的 selecteditem 设置为 null),然后重新选择对象,我就可以通过输入其名称来更改颜色。但是弹出窗口仍然不起作用。
有时它会出错,当您单击下拉箭头时甚至不会打开弹出窗口。
编辑:
这是弹出窗口的具体问题。如果我不使用弹出窗口,我不会遇到任何故障。打开弹出窗口基本上会暂停正在提交的更改(发送 PropertyChanged 事件),直到整个控件失去焦点。因此,一旦我单击另一个窗口或另一个可聚焦控件,属性网格就会更新更改。
问题是:为什么双击或按回车会导致更改提交,但单击弹出窗口中的项目却不会?