65.9K
CodeProject 正在变化。 阅读更多。
Home

将用户自定义对象添加到列表框

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.82/5 (3投票s)

2012年1月17日

CPOL
viewsIcon

30808

列表框对象标签

将自己的对象添加到列表框非常简单,对于那些不知道如何操作的人,我想分享这个简短的说明。:) 例如,如果我们希望能够添加更多或用户自定义的属性或对象,如标签、图像或其他内容到Listbox项中,这将非常有用。首先,我们需要创建自己的对象类
    public class ListBoxItem:Object
    {
        public virtual string Text { get; set; }
        public virtual object Tag { get; set; }
        public virtual object Object { get; set; }
        public virtual string Name { get; set; }

        /// <summary>
        /// Class Constructor
        /// </summary>
        public ListBoxItem()
        {
            this.Text = string.Empty;
            this.Tag = null;
            this.Name = string.Empty;
            this.Object = null;
        }

        /// <summary>
        /// Overloaded Class Constructor
        /// </summary>
        /// <param name="Text">Object Text</param>
        /// <param name="Name">Object Name</param>
        /// <param name="Tag">Object Tag</param>
        /// <param name="Object">Object</param>
        public ListBoxItem(string Text, string Name, object Tag, object Object)
        {
            this.Text = Text;
            this.Tag = Tag;
            this.Name = Name;
            this.Object = Object;
        }

        /// <summary>
        /// Overloaded Class Constructor
        /// </summary>
        /// <param name="Object">Object</param>
        public ListBoxItem(object Object)
        {
            this.Text = Object.ToString();
            this.Name = Object.ToString();
            this.Object = Object;
        }

        /// <summary>
        /// Overridden ToString() Method
        /// </summary>
        /// <returns>Object Text</returns>
        public override string ToString()
        {
            return this.Text;
        }
    }
重写ToString()方法!否则文本将不会在Listbox中显示。基本上,我们只需要用户自定义的属性和ToString()方法。要使用新的用户自定义对象,我们将用户类的新的实例添加到listbox中,这里我们使用一个for循环添加 10 个自动生成的条目
            for (int i = 0; i < 10; i++)
            {
                ListBoxItem test = new ListBoxItem();
                test.Text = "Objekt " + i;
                test.Name = "Ich heiße Objekt " + i;
                test.Tag = DateTime.Now;
                listBox1.Items.Add(test);
            }
要获取listbox中的项目,我们将listbox项转换为我们的用户类
            ListBoxItem item = (ListBoxItem)listBox1.SelectedItem;
            
            string s = "Text:\t" + item.Text 
                + "\nName:\t" + item.Name
                + "\nTag:\t" + item.Tag.ToString();
            
            MessageBox.Show(s, item.ToString());
另一个例子,许多书籍中都有使用... 将汽车制造商、型号和颜色添加到listbox中:首先,我们需要“Car”类型(类)
    public class Car:Object
    {
        public virtual string Manufacturer { get; set; }
        public virtual string Model { get; set; }
        public virtual System.Drawing.Color Color { get; set; }

        /// <summary>
        /// New class instance
        /// </summary>
        /// <param name="Hersteller"></param>
        /// <param name="Modell"></param>
        /// <param name="Farbe"></param>
        public Car(string Manufacturer, string Model, System.Drawing.Color Color)
        {
            this.Manufacturer = Manufacturer;
            this.Model = Model;
            this.Color = Color;
        }

        /// <summary>
        /// Overridden ToString() Method
        /// </summary>
        /// <returns>Object Text</returns>
        public override string ToString()
        {
            return string.Format("{0} {1}, {2}", 
                this.Manufacturer, this.Model, this.Color);
        }
    }
ListBox添加新汽车
            Car car = new Car("BMW", "530i", System.Drawing.Color.Blue);
            listBox1.Items.Add(car);
            car = new Car("Audi", "TT", System.Drawing.Color.Black);
            listBox1.Items.Add(car);
            car = new Car("VW", "Golf", System.Drawing.Color.Red);
            listBox1.Items.Add(car);
            car = new Car("Mercedes", "230E", System.Drawing.Color.White);
            listBox1.Items.Add(car);
获取“Car”对象
            Car car = (Car)listBox1.SelectedItem;
            MessageBox.Show(car.ToString(), "Car Info");
© . All rights reserved.