列表框用于为用户显示一个列表。使用很少的Visual C# 代码,就可以在列表中添加或删除列表项。另外,可以创建一个列表框使用户可以选择其中的一项或多项。当列表框包含的项比它可显示的多时,将自动出现滚动条。
注意:列表框的另一个变种是组合框,组合框看上去像一个右边带有一个下拉箭头按钮的文本框。单击组合框的按钮,控件将显示一个下拉列表框。使用组合框中的列表与使用列表框一样,因此本节将讨论列表操作的细节,然后在下一节讨论组合框的特性。 |
现在并不是要在Picture
Viewer项目中添加列表框或组合框,因此,执行下列步骤创建一个新的项目。
1.创建一个新的Windows应用程序项目,命名为“Lists”。
2.在“解决方案资源管理器”中右击Form1.cs,选择“重命名”,然后将缺省窗体的名称修改为fclsLists.cs。接下来,将窗体的Text属性设置为“Lists Example”。
3.双击工具箱的“ListBox”项,添加一个新的列表框控件到窗体中,然后如下设置列表框的属性:
属性 | 值 |
Name | lstPinkFloydAlbums |
Location | 64,21 |
Size | 160,121 |
列表框中包含的每一项都是列表框Items集合的元素。对列表项的操作,包括添加或删除项目,是通过对Items集合的操作实现的。最常使用代码来操作Items集合(本章稍后将介绍),但在设计时也可用“属性”窗口对Items集合进行操作。
Items集合可通过列表框的属性进行访问。在“属性”窗口中找到Items属性,单击选中它。这时将出现熟悉的带有三个点
的按钮,表示你可以对该属性进行高级的设置。现在单击该按钮,显示“字符串集合编辑器”。要添加元素到集合中,只要在文本框中输入元素—每个元素一行。
输入下列元素:
? Atom
Heart Mother;
? A
Saucerful of Secrets;
? Wish
You Were Here;
? Animals;
? Echoes;
? Meddle。
完成之后,屏幕应如图7.12所示。单击“确定”来提交你的输入并关闭窗口。列表框中现在包含了你所输入的元素。
图7.12 在设计时使用该对话框对Items集合进行操作 |
在第3章中,你学习了对象、属性、方法和集合,所有这些知识都会在此发挥作用。列表框(或组合框)的Items属性是一个返回集合(集合在许多地方与对象一样—它们也有属性和方法)的对象属性。要对列表的元素进行操作,可通过Items集合进行。
列表可以包含重复的值,你将在下面这个例子中看到这一点。因此,Visual C#
2005需要一种机制来唯一地区别列表中的每个元素,而不是使用元素的文本。这一点是通过为Items集合中的每个元素分配一个唯一的索引来实现的。列表
中第一个元素的索引为0,第二个元素的索引为1,依此类推。索引是元素相对于Items集合中的第一个元素—而不是列表中第一个显示的元素—的顺序位置。
使用Items集合的Add()方法,将新元素添加到Items集合中。下面将创建一个按钮,用来添加一张唱片到列表中。在窗体中添加一个新的按钮,并如下设置它的属性:
属性 | 值 |
Name | btnAddItem |
Location | 95,148 |
Size | 96,23 |
Text | Add |
双击按钮访问它的Click事件,然后加入下面的代码:
lstPinkFloydAlbums.Items.Add("Dark Side of
the Moon");
注意,Add()方法接受一个参数—要添加到列表框中的文本。
注意:与在设计时添加的元素不同,通过代码添加的元素在程序结束运行之后并没有保存下来。 |
现在,按F5键运行项目,然后单击这个按钮。这时,新的唱片将添加到列表的底部。再次单击按钮,将添加一个具有相同唱片名称的元素到列表中。列表框并不关心元素是否已经存在于列表中,每次调用Items集合的Add()方法都将添加一个新的元素到列表中。
Items集合的Add()方法可以称为一个函数,它返回索引(新添加元素在集合中的顺序位置),如在下面的代码中:
int intIndex;
intIndex = lstPinkFloydAlbums.Items.Add("Dark
Side of the Moon");
知道元素的索引是有用的,下面你将看到。
停止运行项目,并保存你的工作。
提 |
将一个元素从列表中删除,与添加元素一样简单,只需一个方法调用:调用Items集合的Remove()方法。Remove()方法接受一个字符串,即要删除的元素的文本。下面创建一个按钮从列表中删除一个元素。
显示窗体设计器,在窗体上创建一个新的按钮。如下设置按钮的属性:
属性 | 值 |
Name | btnRemoveItem |
Location | 95,177 |
Size | 96,23 |
Text | Remove |
双击按钮访问它的Click事件,然后加入下面的代码:
lstPinkFloydAlbums.Items.Remove("Dark Side of
the Moon");
Remove()方法告诉Visual C# 搜索Items集合,从第一个元素(index =
0)开始查找,并删除找到的第一个与指定文本相匹配的元素。记住,同一文本可以对应有多个元素。Remove()方法只删除找到的第一个。当找到文本并删
除之后,Visual C# 就停止查找。
按F5键运行项目。单击“Add an Item”按钮几次,将“Dark Side of the Moon”添加到列表中(见图7.13)。接下来,单击“Remove an Item”,注意观察Visual C# 如何找到并删除指定唱片的一个实例。
图7.13 列表框可包含重复的项,但每个项在集合中都是唯一识别的 |
提示:要删除指定索引的元素,使用RemoveAt()方法。例如,要删除列表中的第一个元素,可用下面的语句:lstPinkFloydAlbums.Items.RemoveAt(0);。 |
停止运行项目,并保存你的工作。
要完全清除列表中的内容,使用Clear()方法。下面添加一个按钮到窗体中,单击该按钮时将清除列表。添加一个新的按钮到窗体中,并如下设置按钮的属性:
属性 | 值 |
Name | btnClearList |
Location | 95,206 |
Size | 96,23 |
Text | Clear |
双击按钮访问它的Click事件,然后加入下面的代码:
lstPinkFloydAlbums.Items.Clear();
按F5键运行项目,然后单击“Clear List”按钮。Clear()并不关心元素是在设计时还是在运行时添加到列表中的,它总是将列表中的所有元素删除。现在停止运行项目,并保存你的工作。
提 |
有两个属性提供关于选中元素的信息:SelectedItem和SelectedIndex。这两个是列表框本身的属性而不
是列表框Items集合的属性。SelectedItem返回当前选中元素的文本。如果没有元素被选中,该属性返回一个空的字符串。有时需要知道选中元素
的索引,这可通过列表框的SelectedIndex属性获得。列表中的第一个元素的索引为0。如果没有元素被选中,SelectedIndex返回
-1,这是无效的元素索引。
下面要添加一个按钮到窗体中,当单击这个按钮时,将在一个消息框中显示选中元素的文本和索引。添加一个新的按钮到窗体中,并如下设置它的属性:
属性 | 值 |
Name | btnShowItem |
Location | 95,235 |
Size | 96,23 |
Text | Show |
双击按钮访问它的Click事件,然后输入下面的代码(在第一行之后按回车键):
MessageBox.Show("You selected " +
lstPinkFloydAlbums.SelectedItem +
" which has an
index of " + lstPinkFloydAlbums.SelectedIndex);
MessageBox.Show()是一个用于显示消息给用户的Visual C# 函数。你将在第17章中学习MessageBox.Show()。
按F5键运行项目,然后单击“Show Selected”按钮。注意,由于没有选中列表中的元素
,消息框中显示选中元素的索引为-1(表示没有元素被选中)。单击列表中的一个元素选中它,然后再单击“Show
Selected”按钮。这次,你可以在消息框中看到选中元素的文本和索引。停止运行项目,并保存你的工作。
注 |
列表框和组合框都有一个Sorted属性。当控件最开始被创建时,该属性设置为False。将该属性修改为
True,Visual C#
将按照字母顺序对列表的内容进行排序。列表中的内容排序后,Items集合中每个元素的索引都将发生改变,因此不能再使用将Sorted属性设为Ture
之前获得的索引值。
Sorted是属性而不是方法。你不必调用Sorted来对列表的内容进行排序,只要将Sorted属性设置为
True,Visual C#
就将强制进行排序。这意味着使用Add()方法或Insert()方法添加的所有元素都自动被插入到合适的排序位置,而不是插入到列表的最后或某个指定的
位置。
文章评论(0条评论)
登录后参与讨论