我创建了一个实现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()
中设置断点,它就永远不会被击中。
在网上搜索有关设置SelectedItem
属性的信息似乎相当薄。有人可以解释这里发生的事情。
答案 0 :(得分:1)
尝试实现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();
}
}