ListBox的Item,我想让它显示一个文本信息,又同时包含一个隐含的信息Item怎么可以包含显示的文本属性和一个隐含属性?或者有没有类似的第三方控件?

解决方案 »

  1.   

    不需要第三方控件
    先定义一个类:
    public class ListItemObject
    {
    private string myDisplay ;
    private object  myValue ;    
    public  ListItemObject(string displayText, object objValue )
    {
    this.myDisplay = displayText;
    this.myValue = objValue;
    }
    public string Display
    {
    get {return myDisplay;}
    }
    public object Value
    {
    get{return myValue;}
    }
    }
    在窗体代码里写:
    this.listBox1.DisplayMember = "Display";//实际上就是ListItemObject的Display属性
    this.listBox1.ValueMember = "Value";//实际上就是ListItemObject的Value属性
    this.listBox1.Items.Add(new ListItemObject("第一个值","1"));
    this.listBox1.Items.Add(new ListItemObject("第二个值","2"));
    就可以显示了,你要读取值的时候记得类型转换,比如:
    ListItemObject o = (ListItemObject)this.listBox1.SelectedItem;
      

  2.   

    DisplayMember = "显示的内容";
    ValueMember = "值";
      

  3.   

    要在你的ListItemObject类中重写toString()方法。就能显示到前面的string class listObject
    {
    private string lstStr;
    private object lstObj;
    public listObject(string str1,object obj)
    {
    lstStr=str1;
    lstObj=obj;
    } public string getLstStr()
    {
    return lstStr;
    } public object getLstObj()
    {
    return lstObj;
    }
    public override string ToString()
    {
    return lstStr;
    }
      

  4.   

    using System.Text;
    using System.Windows.Forms;class Items
    {
      string DisplayMember;
      object ValueMember;  public Items(string Text, object Value )
      {
        DisplayMember = Text;
        ValueMember   = Value;
      }  public object Value
      {
        get { return ValueMember; }
      }  public override string ToString()
      {
        return DisplayMember;
      }
    }class Test : Form
    {
      ListBox lbx;  Test()
      {
        Text               = "选择一些项目, 然后单击窗口下半部";
        lbx                = new ListBox();
        lbx.Parent         = this;
        lbx.Width          = 243;
        lbx.Height         = 67;
        lbx.IntegralHeight = false;
        lbx.ColumnWidth    = 60;
        lbx.MultiColumn    = true;
        lbx.BackColor      = BackColor;
        lbx.BorderStyle    = BorderStyle.FixedSingle;
        lbx.SelectionMode  = SelectionMode.MultiSimple;
        for (int i = 1; i <= 9; i++)
        {
          lbx.Items.Add(new Items("字符串"+i, "第"+i+"项"));
        }
        for (int i = 10; i <= 18; i++)
        {
          lbx.Items.Add(new Items("整数"+i, -i));
        }
      }  protected override void OnClick(System.EventArgs e)
      {
        StringBuilder sb = new StringBuilder();
        foreach (Items o in lbx.SelectedItems)
        {
          sb.AppendFormat("{0}: [{1}]\n", o, o.Value);
        }
        MessageBox.Show(sb.ToString());
      }  static void Main()
      {
        Application.Run(new Test());
      }
    }