c# - 为什么在 C# 中,在控件组合框中,我无法更改属性 SelectedItem?

标签 c# winforms list combobox selecteditem

我有一个名为 Tuple 的简单类。看起来像这样:

class tuple
{
    string name;
    string code
}

我将其中一些项目插入到组合框中,现在当我想通过代码选择某些项目时,我尝试编写

myComboBox.selectedItem = new tuple("Hello" , "5");

当然,它根本不起作用,所选项目也不会改变。

假设组合框的项目列表包含一个如下所示的项目,他如何比较这些项目?

我继承了iComparable并实现了它,但不幸的是他根本没有使用它..

如何设置所选项目?我应该用循环运行所有项目并自己比较它们吗?

谢谢

最佳答案

您需要重写 Equals 方法,以便提供自定义比较,该比较能够断言两个 tuple 实例是否表示相同的值。

您还应该检查以下 MSDN 条目,了解如何正确重写 Equals 方法:

Implementing the Equals Method

Guidelines for Implementing Equals and the Equality Operator (==)

每当您重写 Equals 时,有关重写 GetHashCode 的 Microsoft 代码分析规则:

CA2218: Override GetHashCode on overriding Equals

关于c# - 为什么在 C# 中,在控件组合框中,我无法更改属性 SelectedItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681004/

相关文章:

c# - 如果在 List<T>.ForEach 中抛出异常,迭代是否停止?

c# - Number of query values and destination fields are not the same 错误

Python 请求 : Handling JSON response, 存储到列表或字典?

python - 列表和集合的成员资格测试有何不同?

c# - 是否使用另一个列表复制值或引用初始化了通用列表?

c# - 为什么需要 EndExecuteNonQuery()?

c# - Windows Phone 8 追加行到文件

c# - 当鼠标按钮在操作系统中交换时,鼠标单击事件处理程序是否仍然可以根据单击哪个按钮正常工作?

.net - Winforms:在用户控件中添加关闭 "x"按钮

c++ - 如何将我的程序指向我输入到列表中的值? C++