这是我的AOI课程的一部分(没什么特别的):
class AOI : INotifyPropertyChanged
{
private Guid _id;
private string _name;
private string _comment;
public Guid Id
{
get { return _id; }
}
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
public string Comment
{
get { return _comment; }
set
{
_comment = value;
OnPropertyChanged("Comment");
}
}
public override string ToString()
{
if (_name.Length > 0)
{
return _name;
}
else
{
return _id.ToString();
}
}
}
我将它们保存在绑定到BindingList<AOI>
的{{1}}中。在ListBox
的{{1}}事件中,我将所选对象分配给SelectedValueChanged
,以便用户可以修改ListBox
。
除了名称字段(显示在PropertyGrid
中(参见上面的AOI
)之外,此方法正常。
当我使用ListBox
修改名称字段时,ToString()
已正确更新。但是在PropertyGrid
中,只要我按下输入,ListBox
字段(只是值)就会被清除。当我将光标设置为PropertyGrid,
中的另一个字段时,会出现正确的(修改的)值。
正确处理此问题的最简单方法是什么?
答案 0 :(得分:0)
这是PropertyGrid的一个问题。
这也可以在Visual Studio中与设计器一起复制。只需选择一个控件并将其最小尺寸更改为比当前尺寸更大的值。如果您查看网格,则只要在网格中选择它,就不会更新size属性中的值。
如果某些行无法正常更新,通常这两个选项中的一个会有所帮助:
propertyGrid.SelectedObject = myObject
propertyGrid.Invalidate()