我创建了一个实现IComparable<>
的类。就像这样。
public class Entry : IComparable<Entry>
{
private string Data;
public Entry(string data)
{
Data = data;
}
// Implementation...
public int CompareTo(Entry entry)
{
return Data.CompareTo(entry.Data);
}
}
然后我用这些对象填充一个ListBox
控件。
我的期望是,我可以做如下所示的事情。但是这似乎没有效果(并且没有抛出异常)。
Entry entry = new Entry("...");
MyListBox.SelectedItem = entry;
我以为它会使用我的自定义比较代码来查找匹配的项目。但是如果我在Entry.CompareTo()
中设置了一个断点,它永远不会被命中。
在web上搜索,有关设置SelectedItem
属性的信息似乎很少。有人能解释一下这里发生了什么吗。
发布于 2018-06-07 06:19:09
请尝试实现IEquatable接口。因为您显然不关心对象比较,所以可以只在数据字段(可能应该是一个属性)上返回String.Equals结果。
public class Entry : IEquatable<Entry> {
private string Data = string.Empty;
public Entry(string data) {
Data = data;
}
public bool Equals(Entry other) {
if (other == null) return false;
return String.Equals(this.Data, other.Data);
}
public override bool Equals(object obj) {
return Equals(obj as Entry);
}
public override int GetHashCode() {
return this.Data.GetHashCode();
}
}
https://stackoverflow.com/questions/50729614
复制相似问题