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






4.82/5 (3投票s)
列表框对象标签
将自己的对象添加到列表框非常简单,对于那些不知道如何操作的人,我想分享这个简短的说明。:) 例如,如果我们希望能够添加更多或用户自定义的属性或对象,如标签、图像或其他内容到
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");