在没有数据绑定的情况下使用ComboBox.DisplayMember是否安全?

时间:2013-05-10 07:43:44

标签: c# winforms combobox

我一直都知道DisplayMember和ValueMember只能在使用DataSource属性对ComboBox进行数据绑定时使用。

但在某些代码中,我正在维护我已经注意到使用ComboBox'DisplayMember属性 无需数据绑定。设置属性可确定组合框中显示的内容。设置ValueMember似乎不起作用(它没有设置SelectedValue)。

我的问题是:使用这种行为是否安全?或者,在即将发布的.NET版本中,行为可能会发生变化吗?

我知道你通常会覆盖ToString方法。在实际代码中,MyType类并不像我的例子那么简单。我不确定覆盖其ToString方法是否安全。


显示此行为的小样本。

using System;
using System.Windows.Forms;

internal class Program {
    public class MyType {
        public string MyText { get; set; }
        public string MyValue { get; set; }
    }

    public class MyForm : Form {
        private readonly ComboBox _myComboBox;

        public MyForm() {
            _myComboBox = new ComboBox {DisplayMember = "MyText", ValueMember = "MyValue"};
            _myComboBox.Items.Add(new MyType {MyText = "First item", MyValue = "1"});
            _myComboBox.Items.Add(new MyType {MyText = "Second item", MyValue = "2"});
            _myComboBox.SelectedIndexChanged += _myComboBox_SelectedIndexChanged;
            Controls.Add(_myComboBox);
        }

        private void _myComboBox_SelectedIndexChanged(object sender, EventArgs e) {
            var cb = (ComboBox) sender;
            System.Diagnostics.Debug.WriteLine(
                "Index: {0}, SelectedValue: {1}", cb.SelectedIndex, cb.SelectedValue);
        }
    }

    private static void Main() {
        Application.Run(new MyForm());
    }
}

0 个答案:

没有答案