关于.NET中WinForms里面的ListBox实现数据绑定的...

数据

关于.NET中WinForms里面的ListBox实现数据绑定的...

--------------------------------------------------------------------------------

在.NET中,WINDOW FORMS下面的LIST BOX控件在开发时,如果采用其本身的数据绑定,绑定完以后就不能更改ListBox的Items了.而实际开发中却经常会碰到要改变的情况,在这里我提供了一重方法.采用开发继承ListBox控件的自定义控件.然后在里面提供两个SortedList类的属性,一个可以存放ID,一个存放TEXT,这样就解决了上面说的问题!!

控件的代码如下:

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

namespace FlowManage
{
/// <summary>
/// SysListBox 的摘要说明。
/// </summary>
public class SysListBox : System.Windows.Forms.ListBox
{
private SortedList _sl=new SortedList();
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public SysListBox()
{
// 该调用是 Windows.Forms 窗体设计器所必需的。
InitializeComponent();

// TODO: 在 InitializeComponent 调用后添加任何初始化

}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

public SortedList DataValues
{
get
{
return _sl;
}
set
{
_sl=value;
}
}
public void AddItem(object key,object text)
{
if(this.DataValues==null)
{
this.DataValues=new SortedList();
}
this.DataValues.Add(key,text);
}
public void RemoveItem(int index)
{
this.DataValues.RemoveAt(index);
}
public void RemoveItem()
{
this.DataValues.Clear();
}
public void BoundList()
{
this.Items.Clear();
if(this.DataValues!=null)
{
this.BeginUpdate();
for(int i=0;i<this.DataValues.Count;i++)
{
this.Items.Add(this.DataValues.GetByIndex(i).ToString());
}
this.EndUpdate();
}
}
#region Component Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}
#endregion
}
}
而在调用这个控件时的代码如下:

string mkey=this.listCanSel.DataValues.GetKey(this.listCanSel.SelectedIndex).ToString();
string mtext=this.listCanSel.DataValues.GetByIndex(this.listCanSel.SelectedIndex).ToString();
this.listSel.AddItem(mkey,mtext);
this.listCanSel.RemoveItem(this.listCanSel.SelectedIndex);

this.listSel.Items.Add(mtext);
this.listCanSel.Items.RemoveAt(this.listCanSel.SelectedIndex);

时间: 2024-09-09 02:43:25

关于.NET中WinForms里面的ListBox实现数据绑定的...的相关文章

dedecms-织梦中标签里面的sql语句中arc是什么表?

问题描述 织梦中标签里面的sql语句中arc是什么表? 这是arclist标签中的一段. 这个arc是什么表,估计是dede_archives ,但是怎么能这样写的呢? $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart, tp.moresite,tp.siteurl,tp.sitepath $addfields

iOS环信SDK 导入Demo中3rdparty里面的VoiceConvert这个库,会报Undefined symbols for architecture i386

问题描述 iOS环信SDK 想集成Demo中已经写好的UI,导入Demo中3rdparty里面的VoiceConvert这个库,会报Undefined symbols for architecture i386,删掉就能正常运行. 解决方案 你对照demo看下,是不是少库.

repeater中td里面的linkbutton内容过长,如何设置可以自动换行

问题描述 <tableclass="rgMasterTable"cellspacing="0"cellpadding="0"border="0"id="tbrepOperation"style="width:1125px;"><colgroup><colstyle="width:100%;"/></colgroup>&l

从汇编看c++中函数里面的static关键字的使用说明_C 语言

下面从汇编语言看其原理. 下面是c++源代码: 复制代码 代码如下: void add() {    static int i = 1;    i++;}int main() {   add(); } 下面是main对应的汇编码 复制代码 代码如下: ; 5    : int main() {     push    ebp    mov    ebp, esp ; 6    :    add();     call    ?add@@YAXXZ                ; 调用add ;

博奥新能求救:html中的DIV嵌套一个DIV,怎么让里面的DIV剧中?

问题描述 博奥新能求救:html中的DIV嵌套一个DIV,怎么让里面的DIV剧中? 博奥新能在写代码的时候发现这个问题一直没办法解决,IE和360都不能,所以博奥新能不知道哪里出了问题,请大神帮忙解决一下.谢谢.. 解决方案 div剧中css代码div上下左右剧中 解决方案二: 可以尝试一下: 1.对需要水平居中的DIV层添加以下属性: margin-left: auto; margin-right: auto; 2.主要的样式定义如下: body {TEXT-ALIGN: center;} #

timer-DEV 第三方控件中的使用中自定义用户控件里面的Timer 控件的使用

问题描述 DEV 第三方控件中的使用中自定义用户控件里面的Timer 控件的使用 用户控件中使用的代码如下:/asp:ScriptManager /asp:Timer /asp:Literal /asp:UpdatePanel 为什么到事件刷新的时候会报 " Sys.WebForms.PageRequestManagerParserErrorException: 未能分析从服务器收到的消息." 这个错误呢?请指教一下 解决方案 asp不会,jsp会一点,祝你好运!

javascript-js判断一个list里面的applyform对象中的两个日期是否有重复部分?

问题描述 js判断一个list里面的applyform对象中的两个日期是否有重复部分? js判断一个list里面的applyform对象中的两个日期是否有重复部分,求思路和代码,谢谢 解决方案 js判断两个对象是否全等 解决方案二: for遍历list进行对比 var arr = [{ d: '2015-10-12' }, { d: '2015-10-14' }, { d: '2015-10-12' }]; var find = false; for (var i = 0; i < arr.le

jsp中调用上一个网页中调用的js里面的input text的值

问题描述 jsp中调用上一个网页中调用的js里面的input text的值 套了一个时间选择的模板,想要获取开始时间和结束时间,但是这两个出现在调用的js里面,怎么获取 解决方案 将控件绑定id,js中有通过id设置控件内容的方法 解决方案二: 当前网页和上一个网页是什么关系?iframe还是window.open? iframe可以用parent或者document.getElementById('ifrID').contentWindow得到相互引用, window.open用opener或

div布局-div中加div,如果里面的div给margin-top,则外面的div就会整体下移,如何解决

问题描述 div中加div,如果里面的div给margin-top,则外面的div就会整体下移,如何解决 div布局中:div中加div,如果里面的div给margin-top,则外面的div就会整体下移,如何解决 解决方案 你外层div高度是否是固定的,如果是固定的可以改成百分比的: 上面是一个解决办法; 还有一个,如果你外层div定义了样式,你可以将border去掉,这样就可以margin-top了,假设这个网页就这两个div,则里面的div的margin-top是针对网页的 body所言的