c# - 为什么重写的 ToString() 在项目添加到 ComboBox 时不返回我想要的内容?

标签 c# combobox overriding tostring

public partial class TestConrol : UserControl
{
    public TestConrol()
    {
        InitializeComponent();
    }

    public override string ToString()
    {
        return "asd";
    }
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        TestConrol tc1 = new TestConrol();
        comboBox1.Items.Add(tc1);

        TestConrol tc2 = new TestConrol();
        comboBox1.Items.Add(tc2);
    }
}

加载表单时,我看到组合框有两个名称为空的项目,而不是“asd”:/
但是,如果我在公共(public)类中重写 ToString() 而不是派生自任何东西,则此方法有效:

public class TestClass
{
    public override string ToString()
    {
        return "bla bla bla";
    }
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        TestClass tcl = new TestClass();
        comboBox1.Items.Add(tcl);
    }
}

之后我在组合框中看到“bla bla bla”

最佳答案

在您的控件中创建一个属性并将组合框的 DisplayMember 映射到该属性,它应该可以工作。

关于c# - 为什么重写的 ToString() 在项目添加到 ComboBox 时不返回我想要的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15885784/

相关文章:

c# - 仍登录 MVC 站点,但无法调用 Web API

c# - [WPF]如何在 Canvas 上绘制网格?

c# - 即使新旧索引相同,是否也可以触发 ComboBox SelectedIndex Changed 事件?

c# - 设置 DataGridComboBoxColumn 的 ElementStyle 会破坏预期的行为

java - 如何覆盖对象的ArrayList的ToString方法?

c# - 我可以将 libxml2 导入 Visual Studio 2013

c# - 从数据库中获取值并分配按钮文本

vba - 从主窗体驱动子窗体中的 MS Access 查询

python - 覆盖python中的递归方法

C++覆盖具有与基类不同的返回类型的函数