ListBox类:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.listbox.aspx它有三个属性,我简直不懂,MSDN的解释也很生硬DisplayMember 属性:获取或设置要为此 ListControl 显示的属性。
SelectedValue 属性:获取或设置由 ValueMember 属性指定的成员属性的值。
ValueMember 属性:获取或设置一个属性,该属性将用作 ListControl 中的项的实际值。
简直不懂,哪位朋友能用通俗易懂的语言解释一下啊!

解决方案 »

  1.   

    DisplayMember 属性:获取或设置要为此 ListControl 显示的属性。
    当你把一个对象绑定给ListBox,那么那些出现在条目上的文字来自这个对象的某个属性,它的名字。比如name属性、text属性啦SelectedValue 属性:获取或设置由 ValueMember 属性指定的成员属性的值。
    选中的那一项对应的对象的ValueMember代表的那个属性的值。ValueMember 属性:获取或设置一个属性,该属性将用作 ListControl 中的项的实际值。
    类似DisplayMember,你可以保存一个数值,这个值对程序有用,但是不出现在界面上,比如你可以绑定id。
      

  2.   

    class User
    {
        public int UserID { get; set; }
        public string Name { get; set; }
        public string Address { get; set; }
        public string EMail { get; set; }
        public string Phone { get; set; }
        public DateTime DayOfBirth { get; set; }
    }
    比如有这么一个类。我现在往ListBox里面添加它:ListBox1.Items.Add(new User() { UserID = 1, Name = "A", Address = ... });
    ListBox1.Items.Add(new User() { UserID = 2, Name = "B", Address = ... });
    ListBox1.Items.Add(new User() { UserID = 3, Name = "C", Address = ... });
    那么怎么知道ListBox1 中显示什么呢?
    如果DisplayMember = "UserID"
    ListBox1显示 1 2 3
    如果DisplayMember = "Name"
    ListBox1显示 A B C
      

  3.   

    我试验了你这个例子,设置了
     listBox1.DisplayMember = "UserID";      
     listBox1.ValueMember = "Name";添加之后,确实在ListBox中显示的是UserID的值,ValueMember属性是项的实际的值。然后,在下面的事件中
     private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (listBox1.SelectedIndex != -1)
                {
                    textBox1.Text = listBox1.SelectedValue.ToString(); //未将对象引用设置到对象的实例
                }
            }
    为什么总是报错呢?----未将对象引用设置到对象的实例
      

  4.   

     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                listBox1.DisplayMember = "UserID";
                listBox1.ValueMember = "Name";
            }
            private void button1_Click(object sender, EventArgs e)
            {
                listBox1.Items.Add(new Class1() { UserID = 1, Name = "A" });
                listBox1.Items.Add(new Class1() { UserID = 2, Name = "B" });
                listBox1.Items.Add(new Class1() { UserID = 3, Name = "C" });
            }
            private void listBox1_SelectedValueChanged(object sender, EventArgs e)
            {
                if (listBox1.SelectedIndex != -1)
                {
                    textBox1.Text = listBox1.SelectedValue.ToString(); //未将对象引用设置到对象的实例             
                }
            }
        }
     class Class1
        {
            
                public int UserID { get; set; }
                public string Name { get; set; }
        }为什么会报错呢?
      

  5.   

    我将这些数据以datasource的形式付给listbox就解决问题了。