C# 数据绑定Listbox和PropertyGrid的更新问题
这是我AOI课程的一部分,没有什么特别之处:C# 数据绑定Listbox和PropertyGrid的更新问题,c#,listbox,propertygrid,C#,Listbox,Propertygrid,这是我AOI课程的一部分,没有什么特别之处: class AOI : INotifyPropertyChanged { private Guid _id; private string _name; private string _comment; public Guid Id { get { return _id; } } public string Name { get { return _n
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中。在列表框的SelectedValueChanged事件中,我将所选对象分配给PropertyGrid,以便用户可以修改AOI
除了显示在列表框中的名称字段外,这一切正常。请参见上面的ToString
当我使用PropertyGrid编辑name字段时,列表框会正确更新。但是在PropertyGrid中,只要我按enter键,名称字段中的值就会被清除。将光标设置到PropertyGrid中的另一个字段时,将显示正确的修改值
正确处理此问题的最简单解决方法是什么?这是PropertyGrid的问题 这也可以在VisualStudio中与设计师一起复制。只需选择一个控件并将其最小大小更改为比当前控件更大的值。如果查看网格,“大小”属性中的值只有在网格中选择后才会更新 如果某些行无法正常更新,以下两个选项之一将有所帮助: 通过调用PropertyGrid.SelectedObject=myObject将对象重新附加到PropertyGrid 通过调用propertyGrid.Invalidate强制网格重新绘制自身