C#.Net自定义控件 - GridPopupContainerEdit
C#.Net自定义控件 - GridPopupContainerEdit
DevExpress大家都熟悉吧!这是一款超炫超酷俺死心踏地顶礼膜拜的超牛组件。但是在开发应用中有些BT的功能DevExpress没实现出来,有些惭愧,比如这个在GridControl内显示的GridPopupContainerEdit 控件,DevExpress库没有!幸好有一天,我实现了她。 void repositoryItemPopupContainerEdit1_QueryResultValue(object sender, DevExpress.XtraEditors.Controls.QueryResultValueEventArgs e) { try {//将选中的项目组合成字符串 string oldValue = e.Value.ToString(); string newValue = ""; foreach (CheckedListBoxItem o in chkStoveNoList.CheckedItems) { newValue = newValue "," o.Value; } if (newValue.ToString().Length > 0) newValue = newValue.ToString().Substring(1, newValue.ToString().Length - 1); if (oldValue != newValue) { e.Value = newValue; } } catch { } } void repositoryItemPopupContainerEdit1_QueryPopUp(object sender, CancelEventArgs e) { //分解字符串,在选择列表内打勾显示 popCCStoveNo.Width = (sender as PopupContainerEdit).Width; if (gridView1.IsValidRowHandle(gridView1.FocusedRowHandle)) { DataRow row = gridView1.GetDataRow(gridView1.FocusedRowHandle); string stoveNo = "," row["StoveNo"].ToString() ","; //插入不存在炉号 string[] NOs = stoveNo.Split(new char[] { char.Parse(",") }, StringSplitOptions.RemoveEmptyEntries); foreach (string no in NOs) { if (!StoveNoExists(chkStoveNoList.Items, no)) chkStoveNoList.Items.Add(no); } int i = 0; foreach (CheckedListBoxItem no in chkStoveNoList.Items) { bool exists = stoveNo.IndexOf("," no.Value ",") >= 0; chkStoveNoList.SetItemChecked(i, exists); //打勾显示 i ; } //设置下拉显示高度 int height = 20 * 10; if (chkStoveNoList.Items.Count < 10) height = 20 * chkStoveNoList.Items.Count 20; popCCStoveNo.Height = height; } } // 来源:www.CSFramework.com, C/S结构框架学习网 private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("StoveNo", typeof(string)); dt.Rows.Add(new object[] { "A,B,C" }); dt.Rows.Add(new object[] { "AA,BB,CC" }); dt.Rows.Add(new object[] { "AAA,BBB,CCC" }); gridControl1.DataSource = dt; chkStoveNoList.Items.Add("A"); chkStoveNoList.Items.Add("Aa"); chkStoveNoList.Items.Add("AA"); chkStoveNoList.Items.Add("D"); chkStoveNoList.Items.Add("C"); repositoryItemPopupContainerEdit1.QueryPopUp = new CancelEventHandler(repositoryItemPopupContainerEdit1_QueryPopUp); repositoryItemPopupContainerEdit1.QueryResultValue = new DevExpress.XtraEditors.Controls.QueryResultValueEventHandler(repositoryItemPopupContainerEdit1_QueryResultValue); } // 来源:www.CSFramework.com, C/S结构框架学习网
参考文档:
C#.Net自定义控件 - CheckedListBoxEditor(支持多值勾选及新增) C#.Net自定义控件 - GridPopupContainerLookup C#.Net自定义控件设置图标ToolboxBitmap的用法 C# 控件的属性是个类,如何给添加自定义属性 控件的属性是个类,如何给添加自定义属性(C#) C#.Net用户自定义控件制作教程 C#开发自定义控件-设置显示工具箱中的图标 C#.Net开发继承UITypeEditor接口的自定义属性编辑器 C#.Net组件开发 - 设计时使用自定义属性编辑器持久化对象 标签:C#.Net组件开发 - 属性窗体内显示自定义名称 标签:C#.Net组件开发 - 自定义设计器(ComponentDesigner) 标签:C#.Net组件开发 - 自定义设计器持久化对象的属性 标签:C#.Net组件开发 - 自定义属性编辑器持久化对象的属性 C#.Net组件开发(高级篇) - 自定义CollectionEditor编辑器 C#.Net组件开发(高级篇) - 使用自定义TypeConverter生成设计时代码
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |