当前位置:首页 > 网络编程 > WEB编程 > ASP.net > WinForm中类似WebForm中的CheckBoxList控件

WinForm中类似WebForm中的CheckBoxList控件

点击次数:18 次 发布日期:2008-11-26 23:57:55 作者:源代码网
源代码网推荐 前些天,在.Net技术的论坛里面看到了有个帖子,我好像记得是怎么实现WinForm中类似WebForm中的CheckBoxList控件,我简单的实现了那样的一个控件
源代码网推荐
源代码网推荐首先,你得建立一个控件项目,假如说是:
源代码网推荐
源代码网推荐接着,你就添加一个类:CheckBoxCollection,它是个CheckBox的集合类
源代码网推荐
源代码网推荐具体的代码如下
源代码网推荐
源代码网推荐CheckBoxCollection.cs
源代码网推荐
源代码网推荐using System;
源代码网推荐using System.Collections;
源代码网推荐using System.Windows.Forms;
源代码网推荐
源代码网推荐namespace CheckListControl
源代码网推荐{
源代码网推荐 /// <summary>
源代码网推荐 /// CheckBox的集合类
源代码网推荐 /// </summary>
源代码网推荐 public class CheckBoxCollection:System.Collections.CollectionBase
源代码网推荐 {
源代码网推荐 public CheckBoxCollection()
源代码网推荐 {
源代码网推荐 IList pIList=base.List;
源代码网推荐 }
源代码网推荐
源代码网推荐 public CheckBox this[int index]
源代码网推荐 {
源代码网推荐 get
源代码网推荐 {
源代码网推荐 return (CheckBox) List[index];
源代码网推荐 }
源代码网推荐 }
源代码网推荐 public CheckBox Add(CheckBox obj)
源代码网推荐 {
源代码网推荐 base.List.Add(obj);
源代码网推荐 return obj;
源代码网推荐 }
源代码网推荐
源代码网推荐 public void Remove(CheckBox obj)
源代码网推荐 {
源代码网推荐 base.List.Remove(obj);
源代码网推荐 }
源代码网推荐 }
源代码网推荐}
源代码网推荐
源代码网推荐
源代码网推荐然后,在CheckBoxList.cs文件中,定义全局变量
源代码网推荐
源代码网推荐private CheckBoxCollection objCbc=new CheckBoxCollection();
源代码网推荐
源代码网推荐 public event System.EventHandler CheckedChanged;
源代码网推荐
源代码网推荐写自定义函数,外部接口
源代码网推荐
源代码网推荐
源代码网推荐
源代码网推荐/// <summary>
源代码网推荐 /// 新增一个CheckBox到控件
源代码网推荐 /// </summary>
源代码网推荐 /// <returns></returns>
源代码网推荐 public CheckBox NewCheckBox()
源代码网推荐 {
源代码网推荐 lab.Visible=false;
源代码网推荐 CheckBox cb=new CheckBox();
源代码网推荐 cb.Name=GetName();
源代码网推荐 cb.Text=cb.Name;
源代码网推荐// cb.Size=new Size(120,24);
源代码网推荐 cb.Checked=false;
源代码网推荐 cb.Visible=true;
源代码网推荐 cb.CheckedChanged+=new EventHandler(CheckBox_CheckedChanged);//定义CheckedChanged事件,来捕捉它的事件
源代码网推荐 int y=0;
源代码网推荐 y=objCbc.Count * 24 + objCbc.Count * 8 + 12;//形成CheckBox的纵坐标
源代码网推荐 cb.Location=new Point(12,y);
源代码网推荐 objCbc.Add(cb);
源代码网推荐
源代码网推荐 this.Controls.Add(cb);//添加CheckBox到控件
源代码网推荐
源代码网推荐 int x=GetMaxWidth();//得到已经添加的CheckBox中的最大的宽度
源代码网推荐
源代码网推荐 if(cb.Width >x )//如果现在添加的CheckBox的最大宽度大于已经添加的最大宽度,替换调x
源代码网推荐 {
源代码网推荐 x = cb.Width + 24;
源代码网推荐 }
源代码网推荐
源代码网推荐 this.Size=new Size(x ,y +12+24);//根据添加的CheckBox改变控件的大小
源代码网推荐
源代码网推荐 return cb;
源代码网推荐 }
源代码网推荐
源代码网推荐 /// <summary>
源代码网推荐 /// 自动形成新添加CheckBox的名称
源代码网推荐 /// </summary>
源代码网推荐 /// <returns></returns>
源代码网推荐 private string GetName()
源代码网推荐 {
源代码网推荐 if(objCbc.Count>0)
源代码网推荐 {
源代码网推荐 ArrayList list=new ArrayList();
源代码网推荐 for(int i=0;i<objCbc.Count;i++)
源代码网推荐 {
源代码网推荐 if(objCbc[i].Name.Trim().Length==9)
源代码网推荐 {
源代码网推荐 string str=objCbc[i].Name.Trim();
源代码网推荐 if(str.Substring(0,8).ToLower()=="checkbox" && IsNumber(str.Substring(str.Length-1,1)))
源代码网推荐 {
源代码网推荐 list.Add(str.Substring(str.Length-1,1));
源代码网推荐 }
源代码网推荐 }
源代码网推荐 }
源代码网推荐 if(list.Count>0)
源代码网推荐 {
源代码网推荐 return "checkBox" + Convert.ToString(int.Parse(list[list.Count-1].ToString().Trim()) + 1);
源代码网推荐 }
源代码网推荐 }
源代码网推荐
源代码网推荐 return "checkBox1";
源代码网推荐 }
源代码网推荐
源代码网推荐 /// <summary>
源代码网推荐 /// 判断是否是阿拉伯数字
源代码网推荐 /// </summary>
源代码网推荐 /// <param name="strCompare"></param>
源代码网推荐 /// <returns></returns>
源代码网推荐 private bool IsNumber(string strCompare)
源代码网推荐 {
源代码网推荐 string strWord="0123456789";
源代码网推荐 foreach(char chr in strWord)
源代码网推荐 {
源代码网推荐 if(strCompare==chr.ToString())
源代码网推荐 {
源代码网推荐 return true;
源代码网推荐 }
源代码网推荐 }
源代码网推荐 return false;
源代码网推荐 }
源代码网推荐
源代码网推荐 /// <summary>
源代码网推荐 /// 得到已经添加CheckBox中的最大宽度
源代码网推荐 /// </summary>
源代码网推荐 /// <returns></returns>
源代码网推荐 private int GetMaxWidth()
源代码网推荐 {
源代码网推荐 int maxWidth=0;
源代码网推荐 if(objCbc.Count>0)
源代码网推荐 {
源代码网推荐 for(int i=0;i<objCbc.Count;i++)
源代码网推荐 {
源代码网推荐 CheckBox cb=(CheckBox)objCbc[i];
源代码网推荐 if(cb.Width>maxWidth)
源代码网推荐 {
源代码网推荐 maxWidth=cb.Width;
源代码网推荐 }
源代码网推荐 }
源代码网推荐 }
源代码网推荐 return maxWidth;
源代码网推荐 }
源代码网推荐
源代码网推荐// [Browsable(true), Description("得到CheckBox集合"), Category("CheckList")]
源代码网推荐// public CheckBoxCollection CheckList
源代码网推荐// {
源代码网推荐// get
源代码网推荐// {
源代码网推荐// return objCbc;
源代码网推荐// }
源代码网推荐// }
源代码网推荐
源代码网推荐 private void CheckBox_CheckedChanged(object sender, EventArgs e)
源代码网推荐 {
源代码网推荐 CheckedChanged(sender,new EventArgs());
源代码网推荐 }
源代码网推荐
源代码网推荐
源代码网推荐
源代码网推荐编译以后,就可以得到CheckListControl.dll;
源代码网推荐
源代码网推荐添加新项目用于类的测试
源代码网推荐
源代码网推荐
源代码网推荐
源代码网推荐在工具箱中->添加/移除项,把CheckListControl添加进来,然后拖CheckListControl到Form1中
源代码网推荐
源代码网推荐form1.cs中
源代码网推荐
源代码网推荐private void Form1_Load(object sender, System.EventArgs e)
源代码网推荐 {
源代码网推荐 CheckBox cb=checkBoxList1.NewCheckBox();
源代码网推荐 cb.Name="chkFirst";
源代码网推荐 cb.Text="第一个CheckBox";
源代码网推荐 cb.Size=new Size(125,24);
源代码网推荐 cb=checkBoxList1.NewCheckBox();
源代码网推荐 cb.Name="chkSecond";
源代码网推荐 cb.Text="第二个CheckBox";
源代码网推荐 cb.Size=new Size(125,24);
源代码网推荐 }
源代码网推荐
源代码网推荐 private void checkBoxList1_CheckedChanged(object sender, System.EventArgs e)
源代码网推荐 {
源代码网推荐 CheckBox cb=(CheckBox)sender;
源代码网推荐 MessageBox.Show("Name: " + cb.Name + " Text: " +cb.Text);
源代码网推荐 }
源代码网推荐
源代码网推荐具体的就这样
源代码网推荐
源代码网推荐其实,只是作了简单的一个CheckBoxList,具体很多还有其它的功能没有加上,希望网友指正,添加更多功能
源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华