c#控件攻略宝典之ListBox控件
ListBox控件的使用:
1)控件属性
Items
SelectedItems
SelectioModes
2)数据绑定
DataSoure
DisplayMember
ValueMenber
3)实例
下面开始一一说明上面的ListBox控件的使用。
首先来说控件的属性,(1)Items:使用此属性获取列表控件项的属性。此属性可用于确定列表控件中的选定项。添加items时既可以设计时静态添加,也可以在代码中动态添加。如果不想显示设计时添加的items,可以在代码中添加this.listBox1.Items.Clear();只显示在代码中添加的选项。
(2)SelectedItems:获取包含ListBox中当前选定项的集合。
(3)SelectioModes:获取或设置在ListBox中选择项所用的方法。一共有四个值可选;默认为 SelectionMode.One,只能选中一个;属性值为none时不能选择;当属性MultiExtended 时,按下 Shift 键的同时单击鼠标或者同时Shift 键和箭头键之一(向上键、向下键、向左键和向右键),会将选定内容从前一选定项扩展到当前项。按 Ctrl 键的同时单击鼠标将选择或撤消选择列表中的某项;当该属性设置为MultiSimple 时,鼠标单击或按空格键将选择或撤消选择列表中的某项。
接下来说一哈数据绑定,通常数据都是可变的,所以说就需要数据绑定。数据绑定有几种,一种就是绑定从数据库中获取的DataTable或者是DataSet;另外一种就是自定义一个类,绑定自定义类中的数据。c#中的数据绑定与ASP.NET中的数据绑定还有一点区别,ASP.NET中绑定数据后还要调用一个DataBind方法,而在c#中就不需要。而DisplayMember获取或设置要显示的属性。
最后我们来做一个实例如图所示:下面我们只是说一哈几个重要的方法的实现,具体代码就不在这写了。将左边框中的选项放到右边框中去。代码:
for (int i = this.listBox1.SelectedItems.Count - 1; i >= 0;i -- )
{
Menu menu = (menu)this.listBox1.SelectedItems[i];
this.listBox2.Items.Add(menu);
this.listBox1.Items.Remove(i);
}
上面虽然实现了功能但是有一个问题,就是左边的项到了右边后变成了倒序。这是我们需要将添加和移出分开写,代码:
for (int i = 0; i < this.listBox1.SelectedItems.Count;i++ )
{
Menu menu = (menu)this.listBox1.SelectedItems[i];
this.listBox2.Items.Add(menu);
}
for (int i = this.listBox1.SelectedItems.Count - 1; i >= 0; i--)
{
this.listBox1.Items.Remove(i);
}
到现在为止还一个问题就是当选择框中的前面几个项的时候右移没有问题,但选择后面几个项时移到右边框中的是后面几个项,而左边框中移出的是前面几个项,造成这个问题的原因是我们将
SelectedItems和Items混为一谈了。这是很多初学者容易犯的错误。代码:
for (int i = 0; i < this.listBox1.SelectedItems.Count;i++ )
{
Menu menu = (menu)this.listBox1.SelectedItems[i];
this.listBox2.Items.Add(menu);
}
for (int i = this.listBox1.SelectedItems.Count - 1; i >= 0; i--)
{
Menu menu = (menu)this.listBox1.SelectedItems[i];
this.listBox1.Items.Remove(menu);
}
这样的话就对了。
c#控件攻略宝典之ListBox控件的更多相关文章
- android屏幕适配的全攻略3-动态获取手机屏幕宽高及动态设置控件宽高
1.获取手机屏幕宽高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetr ...
- WPF知识点全攻略05- XAML内容控件
此处简单列举出布局控件外,其他常用的控件: Window:WPF窗口 UserControl:用户控件 Page:页 Frame:用来浏览Page页 Border:嵌套控件,提供边框和背景. Butt ...
- [转]使用C#开发ActiveX控件全攻略
前言: 这段时间因为工作的需要,研究了一下ActiveX控件.总结如下: 先说说ActiveX的基本概念. 根据微软权威的软件开发指南MSDN(Microsoft Developer Network) ...
- 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch
[源码下载] 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch 作者:webabcd 介绍背水一 ...
- asp.net中的ListBox控件添加双击事件
问题:在Aspx页里的ListBox A中添加双击事件,将选中项添加到另一个ListBox B中,双击ListBox B中的选中项,删除当前选中项 页面: <asp:ListBox ID=&qu ...
- 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch
1.ListBox 的示例Controls/SelectionControl/ListBoxDemo.xaml <Page x:Class="Windows10.Controls.Se ...
- WPF中ListBox控件在选择模式(SelectionMode)为Single时仍然出现多个Item被选中的问题
最近在学习WPF过程中使用到了ListBox控件,在使用时遇到下面的奇怪问题: 代码如下: listBox.Items.Add("绘图"); listBox.Items.Add(& ...
- MATLAB GUI程序设计中ListBox控件在运行期间消失的原因及解决方法
在运行期间,ListBox控件突然消失,同时给出如下错误提示: Warning: single-selection listbox control requires that Value be an ...
- MFC中Listbox控件的简单使用
MFC中listbox控件是为了显示一系列的文本,每个文本占一行. Listbox控件可以设置属性为: LBS_CHILD :(默认)子窗口 LBS_Visible :(默认)可视 LBS_M ...
随机推荐
- Node.js之循环依赖
在Node.js中有可能会出现循环依赖的问题,在此做一个简单的记录 假如有一个模块A: exports.loaded = false; const b = require('./b'); module ...
- Html事件冒泡
原以为span不同于input,事件冒泡会被父级标签吞噬,写了个测试事件冒泡的Demo,发现并不是想得那样.另外:event.stopPropagation()以及event.stopImmediat ...
- Python自学笔记-面向对象编程(Mr seven)
类的成员可以分为三大类:字段.方法和属性. 一.字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 二.方法 方法 ...
- webpack2使用ch5-多页面设置 内部js和引入js
1 当前目录 2 webpack.config.js 配置 const webpack = require('webpack'), htmlWebpackPlugin = require('html- ...
- Python系列之反射、面向对象
一.反射 说反射之前先介绍一下__import__方法,这个和import导入模块的另一种方式 1. import commons 2. __import__('commons') 如果是多层导入: ...
- Oracle 定时查询数据插入新表中(job+存储过程)
create table EGMAS_COUNT_DATA(TIMES date not null, COUNT NUMBER(30) not null, SYSTEM_NAME VARC ...
- 阿里云AliYun表格存储(Table Store)相关案例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Mysql的二进制安装和基础入门操作
前言:Mysql数据库,知识非常的多,要想学精学通这块知识,估计也要花费和学linux一样的精力和时间.小编也是只会些毛皮,给大家分享一下~ 一.MySQL安装 (1)安装方式: 1 .程序包yum安 ...
- 一个demo学会js
全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...
- cocos2dx - Sqlite简单封装使用
前言: 一般游戏需要在手机上记录一些简单的信息,用来保存游戏的进度,玩家的分数等.SQLite作为轻量级.跨平台的关系型数据库,相当适合用于游戏数据的存储. 由于没有加密,有安全性问题,数据上还需要自 ...