1 命名空间与继承
命名空间1:System.Windows.Forms
继承1:
Object→MarshalByRefObject→Component→Control→ListControl→ListBox
命名空间2:
命名空间2:System.Windows.Controls
继承2:
Object→DispatcherObject→DependencyObject→Visual→UIElement→FrameworkElement→Control→ItemsControl→Selector→ListBox
ListBox:表示用于显示项列表的 Windows 控件。
2 常用属性及方法
(1)DataSource(数据源属性):获取或设置此 ListControl 的数据源。
(2)Items:获取ListBox的项。
(3)MultiColumn:获取或设置一个值,该值指示 ListBox 是否支持多列。
(4)SelectedIndex:获取或设置 ListBox 中当前选定项的从零开始的索引。
(5)SelectedItem:获取或设置 ListBox 中的当前选定项。
(6)SelectedItems:获取包含 ListBox 中当前选定项的集合。
(7)Text:获取或搜索 ListBox 中当前选定项的文本。
(8)Dispose():释放由 Component 使用的所有资源。
(9)GetItemText(Object):返回指定项的文本表示形式。
3 实例
现制作一个ListBox选择器,界面布局如下:
实现功能:①代码添加“列表1”的项内容并显示。
②中间“→”,“←”按钮实现列表1和列表2的项移动功能。
③底部的“获取”按钮点击触发click时间,textBox用于显示列表2的结果。
步骤:(1)在新建的WinForm窗体中拖入两个ListBox(命名为:lit1与lit2),三个按钮(分别命名为:btn12,btn21,btn),一个textBox(命名为:txt)。
(2)分别添加三个按钮的click事件。
(3)代码如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.lit1.Items.Clear();
//for循环添加添加DataSource[this.lit1.DataSource = provinces;添加的有问题]
//this.lit1.DataSource = provinces;
for (int i = 0; i < provinces.Length; i++)
{
this.lit1.Items.Add(provinces[i]);
}
}
//provinces数组:作为lit1的DataSource
string[] provinces = new string[]{
"青海省","四川省",
"黑龙江省","甘肃省","云南省",
"湖北省","广东省","贵州省","河南省"};
//btn12事件:将左边的ListBox项移动到右边
private void btn12_Click(object sender, EventArgs e)
{
if (this.lit1.Items.Count > 0)
{
Object item1 = this.lit1.SelectedItem;
if (item1 != null)
{
//删除项
this.lit1.Items.Remove(item1);
//添加项
this.lit2.Items.Add(item1);
}
}
}
//btn21事件:将右边的ListBox项移动到左边
private void btn21_Click(object sender, EventArgs e)
{
if (this.lit2.Items.Count > 0)
{
Object item2 = this.lit2.SelectedItem;
if (item2 != null)
{
this.lit2.Items.Remove(item2);
this.lit1.Items.Add(item2);
}
}
}
//”获取“按钮:获取右边ListBox(lit2)的所有项,并添加到TextBox中
private void btn_Click(object sender, EventArgs e)
{
this.txt.Clear();
Object[] ite = new Object[this.lit2.Items.Count];
for (int i = 0; i < this.lit2.Items.Count; i++)
{
this.txt.AppendText(this.lit2.Items[i].ToString()+"\n");
}
}
}
效果如下: