ListBox组件是一个程序设计中经常使用到的组件,在Visual C#和Visual Basic .Net程序中使用这个组件,必须要在程序中导入.Net FrameWork SDK中名称空间System.Windows.Forms,因为在System.Windows.Forms名称空间中定义了这个组件。在ASP.NET的Web页面中,ListBox组件是作为一个服务器端组件的形式出现的,所谓服务器端组件就是这些组件是在服务器端存在的。本文就是来介绍ListBox组件在ASP.NET的Web页面中的具体使用和操作方法。

一.
如何在ASP.NET页面中定义一个ListBox组件:

在ASP.NET页面中创建一个ListBox组件的语法如下:

<asp:ListBox Id = "MyListBox" runat = "server" >

<asp:ListItem Value
= "1" >第一个条目</asp:ListItem >

<asp:ListItem Value = "2"
>第二个条目</asp:ListItem >

注释:这里还可以加入类似上面的若干条目

.....

</asp:ListBox >

在Web页面中执行上面的语句就可以产生一个名称为"MyListBox",包含若干条目的ListBox组件。

二. ListBox组件中常用的属性:

我们通过以下表格来说明ListBox组件的一些常用的属性:

属性名称 属性代表的意义
SelectionMode 组件中条目的选择的类型即:多选、单选。Single,Multiple
Rows 此组件显示总共多少行
Selected 检测条目十分被选中
SelectedItem 返回的类型是ListItem,获得组件中被选择的条目
Count 组件中条目的总数
SelectedIndex 组件中被选择的条目的索引值
Items 泛指组件中所有的条目,每一个条目的类型都是ListItem

三.
通过一个例子来掌握ListBox组件在ASP.NET页面中的具体用法:


在下面介绍ListBox组件在ASP.NET中的使用方法的时候,程序采用的程序设计语言是Visual C#

(1).如何在ListBox组件添加新的条目:

通过以下语句就可以在名称为lstItem的ListBox组件中增加一个名称为"Sample"的条目:

lstItem .
Items . Add ( new ListItem ( "Sample" ) )

(2).如何在ListBox组件中删除指定的条目:

下列语句就是删除名称为lstItem的ListBox组件中的选定的一个条目:

  lstItem . Items .
Remove ( lstItem . SelectedItem )

(3).如何在组件中移动指向条目的指针:

移动条目的指针主要有四种方式:至首条目、至尾条目、下一条、上一条。在程序设计中主要是通过操作组件的Count和SelectedIndex属性来实现以上四种方式的。以下就是具体实现这四种方式的程序代码:

//按钮"至首条"事件处理程序

if ( sender == First )

{

if (
lstItem . Items . Count > 0 )

{

lstItem . SelectedIndex = 0 ;

}

}

//按钮"至尾条"事件处理程序

if ( sender == Last )

{

if ( lstItem . Items . Count > 0 )

{

lstItem .
SelectedIndex = lstItem . Items . Count - 1 ;

}

}

//按钮"上一条"事件处理程序

if ( sender == Prev )

{

if (
lstItem . SelectedIndex > 0 )

{

lstItem . SelectedIndex =
lstItem . SelectedIndex - 1 ;

}

}

//按钮"下一条"事件处理程序

if ( sender == Next )

{

if ( lstItem . SelectedIndex <
lstItem . Items . Count - 1 )

{

lstItem . SelectedIndex =
lstItem . SelectedIndex + 1 ;

} }

(4).如何实现组件中的指定条目的移位:

移位包括二种,其一是向上移位,其二是向下移位。程序中具体的实现思路是:创建一个ListItem对象,并把要移位指定的条目中的内容先暂放在此新建的这个对象中。如果选定的是向上移位,就把当前选定的条目的上一个条目的值赋值给当前选定的条目,然后把刚才新建的对象的值,再赋值给选定条目的上一个条目,完成条目的向上移位操作。对于向下移位,可以仿效上面的做法,但和上面做法的主要区别在于不是选定条目的上一个条目了,而是选定条目的下一个条目。下列语句就是就是实现这种思路的具体的程序代码:

//按钮"向上移位"和"向下移位"事件处理程序

if ( ( sender == Up && lstItem .
SelectedIndex > 0 ) ||
    ( sender ==
Down && lstItem .
SelectedIndex < lstItem . Items . Count - 1 ) )

{

int offset ;

if ( sender == Up )

{

offset = -1 ;

}

else

{

offset = 1 ;

}

ListItem lstTemp =
new ListItem ( lstItem . SelectedItem . Text

                                lstItem . SelectedItem . Value ) ;

lstItem . Items [ lstItem.SelectedIndex ] .Text =
lstItem . Items [
lstItem . SelectedIndex + offset ] . Text ;

lstItem . Items [ lstItem .
SelectedIndex ] . Value =
lstItem . Items [ lstItem . SelectedIndex + offset
] . Value ;

lstItem . Items [ lstItem . SelectedIndex + offset ] . Text
=
lstTemp . Text ;

lstItem . Items [ lstItem . SelectedIndex +
offset ] . Value =
lstTemp . Value ;

lstItem . SelectedIndex =
lstItem . SelectedIndex + offset ;

}

四. 本文中源程序代码(listbox.aspx)和执行的界面:

下图是执行了下列源程序代码(listbox.aspx)后,生成的界面:

listbox.aspx源程序代码,具体如下:

<% @ Page Language = "C#" %>

<html >

<head >

<script runat = "server" >

protected void Button_Click ( object sender , EventArgs e )

{

//按钮"增加条目"事件处理程序

if ( sender == Add )

{

if (
txtItem.Text != "" )

{

lstItem . Items . Add ( new ListItem (
txtItem . Text ) ) ;

}

}

//按钮"删除"事件处理程序

if (
sender == Del )

{

if ( lstItem . SelectedIndex > -1 )

{

lstItem . Items . Remove ( lstItem . SelectedItem ) ;

}

}

//按钮"向上移位"和"向下移位"事件处理程序

if ( ( sender == Up &&
lstItem . SelectedIndex > 0 ) || ( sender == Down && lstItem .
SelectedIndex < lstItem . Items . Count - 1 ) )

{

int offset ;

if ( sender == Up )

{

offset = -1 ;

}

else

{

offset = 1 ;

}

ListItem lstTemp =
new ListItem ( lstItem . SelectedItem . Text , lstItem . SelectedItem . Value )
;

lstItem . Items [ lstItem.SelectedIndex ] .Text = lstItem . Items [
lstItem . SelectedIndex + offset ] . Text ;

lstItem . Items [ lstItem .
SelectedIndex ] . Value = lstItem . Items [ lstItem . SelectedIndex + offset ] .
Value ;

lstItem . Items [ lstItem . SelectedIndex + offset ] . Text =
lstTemp . Text ;

lstItem . Items [ lstItem . SelectedIndex + offset ] .
Value = lstTemp . Value ;

lstItem . SelectedIndex = lstItem .
SelectedIndex + offset ;

}

//按钮"至首条"事件处理程序

if ( sender
== First )

{

if ( lstItem . Items . Count > 0 )

{

lstItem . SelectedIndex = 0 ;

}

}

//按钮"至尾条"事件处理程序

if ( sender == Last )

{

if (
lstItem . Items . Count > 0 )

{

lstItem . SelectedIndex =
lstItem . Items . Count - 1 ;

}

}

//按钮"上一条"事件处理程序

if ( sender == Prev )

{

if ( lstItem . SelectedIndex > 0
)

{

lstItem . SelectedIndex = lstItem . SelectedIndex - 1 ;

}

}

//按钮"下一条"事件处理程序

if ( sender == Next )

{

if ( lstItem . SelectedIndex < lstItem . Items . Count - 1 )

{

lstItem . SelectedIndex = lstItem . SelectedIndex + 1 ;

}

}

}

</script >

</head >

<body

<form runat = "server" >

<table >

<tr > <td Colspan =
2 > <h1 > <font color = "red" > WinForm组件ListBox演示程序 </font > </h1 > </td> </tr

<tr >

<td > 请输入要增加的条目名称:</td >

<td >

<asp:TextBox id = "txtItem" TextMode = "SingleLine" runat = "server"/>

<asp:Button id = Add Text = "增加条目" runat = "server" onclick =
"Button_Click"/>

</td >

</tr >

<tr >

<td
>ListBox: <br >

<asp:ListBox id = "lstItem" Width = 200 Height = 250
runat = "server" >

<asp:ListItem > 第一个条目 </asp:ListItem >

</asp:ListBox >

</td >

<td >

<asp:Button id =
"Del" Text = "删除" runat = "server" onclick = "Button_Click" />

<asp:Button id = "Up" Text = "向上移位" runat = "server" onclick =
"Button_Click" />

<asp:Button id = "Down" Text = "向下移位" runat = "server"
onclick = "Button_Click" />

<asp:Button id = "First" Text = "至首条" runat
= "server" onclick = "Button_Click" />

<asp:Button id="Prev" Text =
"上一条" runat = "server" onclick = "Button_Click" />

<asp:Button id =
"Next" Text = "下一条" runat = "server" onclick = "Button_Click" />

<asp:Button id = "Last" Text = "至尾条" runat = "server" onclick =
"Button_Click" />

</td >

</tr >

</table >

</form

<body >

</html > 

WinForm中的ListBox组件编程的更多相关文章

  1. winform中的ListBox和ComboBox绑定数据

    将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容 //... //自定义了Person类(有Name,Age,Heigth等属性) List<Person> ...

  2. WinForm中获取Listbox、DataGridView等控件某行对应的数据

    Listbox:listbox.SelectedItem as XXX DataGridView:dataGridView1.Rows[i].Cells[1].Value.ToString()

  3. [Winform]Media Player com组件应用中遇到的问题

    摘要 最近一个项目中,需要用到在客户端全屏循环播放视频,当时考虑使用开源的播放器,但控制起来不方便,然后考虑既然都是windows系统,那么可以考虑使用微软自带的Media Player播放器.所以在 ...

  4. 在C#中实现listbox的项上下移动(winform) 标准

      在C#中实现listbox的项上下移动(winform) 收藏人:梅毛子360   2013-10-02 | 阅:1  转:2  |  分享    |    来源              usi ...

  5. 浅析C#组件编程中的一些小细节

    控件与组件的区别(Control&Component的区别) 作者:作者不详  发布日期:2011-06-30 12:08:41 控件与组件的区别(Control&Component的 ...

  6. 分享在winform下实现模块化插件编程-优化版

    上一篇<分享在winform下实现模块化插件编程>已经实现了模块化编程,但我认为不够完美,存在以下几个问题: 1.IAppContext中的CreatePlugInForm方法只能依据完整 ...

  7. .Net中的反应式编程(Reactive Programming)

    系列主题:基于消息的软件架构模型演变 一.反应式编程(Reactive Programming) 1.什么是反应式编程:反应式编程(Reactive programming)简称Rx,他是一个使用LI ...

  8. Net中的反应式编程

    Net中的反应式编程(Reactive Programming)   系列主题:基于消息的软件架构模型演变 一.反应式编程(Reactive Programming) 1.什么是反应式编程:反应式编程 ...

  9. .NET中使用APlayer组件自制播放器

    目录 说明 APlayer介绍 APlayer具备功能 APlayer使用 自制播放器Demo 未完成工作 源码下载 说明 由于需求原因,需要在项目中(桌面程序)集成一个在线播放视频的功能.大概要具备 ...

随机推荐

  1. MySQL 多表批量更新

    使用inner join 进行表更新sql 与mysql 的区别: SQL UPDATE W SET W.字段=新数据 FROM 表a W INNER JOIN 表B d ON W.wID=D.wid ...

  2. 在mac上快捷找到nodejs的安装路径

    打开控制台输入 which node ,得到的输出结果就是node安装路径

  3. 体验SqlServer Express 2014

    想使用SQLServer Express记录一些数据,但使用起来并不令人愉快.SQLServer Express是一个免费的可用数据库,但似乎设置了一些门槛,多少显得并不真心实意.抛开版本(技术)限制 ...

  4. cad二次开发中各种头的定义

    Database db=HostApplicationServices.WrokingDatabase; Editor ed=Autodesk.AutoCAD.ApplicationService.A ...

  5. 模拟Spring容器的getBean方法(Maven工程)

    Spring容器的getBean方法是通过反射机制实现的,下面的测试程序模拟getBean的实现原理. 步骤一:pom.xml文件配置解析XML文件的dom4j.jar 步骤二:XML文件中配置bea ...

  6. PAT 1047. Student List for Course

    Zhejiang University has 40000 students and provides 2500 courses. Now given the registered course li ...

  7. Ac自动机基础题集合

    Ac_automaton的板子打熟以后发现碰到题不会做,而且还是比较纯的板子,只要改几处地方就可以,Ac_automation有许多优秀而fantasy的性质,下面粘几个题,来记录一下做题的心得. 1 ...

  8. BZOJ 2754 [SCOI2012]喵星球上的点名 (AC自动机、树状数组)

    吐槽: 为啥很多人用AC自动机暴力跳都过了?复杂度真的对么? 做法一: AC自动机+树状数组 姓名的问题,中间加个特殊字符连起来即可. 肯定是对点名串建AC自动机(map存儿子),然后第一问就相当于问 ...

  9. 【郑轻邀请赛 D】hipercijevi

    [题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2130 [题意] [题解] 把那个管泛化成一个点; 然后把每一个在管里面的点都和它相连 ...

  10. Pycharm 的基本操作

    下载:https://www.jetbrains.com/pycharm/ 安装:随意安装在那个目录都可以 注册:可以采用 激活码 或者激活服务器,并对应在选项下面填入激活码或者激活服务器URL即可. ...