首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ComboBox未显示文本

ComboBox未显示文本
EN

Stack Overflow用户
提问于 2011-08-31 18:55:20
回答 2查看 3.1K关注 0票数 1

我有下面的代码,我试图使用它来填充一个ComboBox,但是它没有显示我要添加的对象的实际文本。

代码语言:javascript
复制
internal partial class SortBox : UserControl {
    private Field[] FieldReferences
    ...
    internal Field[] Fields {
        ...
        set {
            this.FieldReferences = value;
            this.cboFields.Items.Clear();
            string NoneString = "(none)";
            this.cboFields.Items.Add(NoneString);
            this.cboFields.SelectedItem = NoneString;
            foreach (Field Field in this.FieldReferences) {
                MessageBox.Show(Field.ToString()); // <- This displays what I want displayed perfectly.
                this.cboFields.Items.Add(Field);
            }
        }
    }
    ...
}

public partial class Field : UserControl {
    protected string LabelValue;
    ...
    public override string ToString() {
        return this.LabelValue;
    }
}

这是我得到的;它们都是空白的:

我做错了什么?

编辑:显然是,我的字段类是从UserControl继承的。我做了一些测试,这显然与类继承自System.ComponentModel.Component这一事实有关。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-03 00:03:55

如果我正确地阅读了您的代码,您将尝试在组合框中放置一个用户控件。

当您这样做时,重写ToString将无法工作,因此要使当前的代码正常工作,只需更改DrawMode:

这样做是可行的:

代码语言:javascript
复制
cboFields.DrawMode = DrawMode.OwnerDrawFixed;
cboFields.DrawItem += new DrawItemEventHandler(cboFields_DrawItem);

private void cboFields_DrawItem(object sender, DrawItemEventArgs e)
{
  e.DrawBackground();
  if (e.Index > -1)
    e.Graphics.DrawString(cboFields.Items[e.Index].ToString(), e.Font, Brushes.Black, e.Bounds);
}

但我不得不说,我不知道在ComboBox集合中放置一个ComboBox是否是最好的方法。我会认真考虑不同的重构。

票数 1
EN

Stack Overflow用户

发布于 2011-08-31 18:58:49

添加到组合框中的项也应该是字符串,就像在消息框中一样。

尝试:this.cboFields.Items.Add(Field.ToString());

或者,您可以尝试设置DisplayMember字段,尽管ToString应该已经是默认的:

this.cboFields.DisplayMember = "ToString()"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7261977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档