【原创】C# Winform Dev自动下拉弹框筛选数据PopupContainerEdit组件
【原创】C# Winform Dev自动下拉弹框筛选数据PopupContainerEdit组件
ucMyLookUpEdit组件介绍
ucMyLookUpEdit用户自定义组件支持输入内容自动下拉弹框,表格自动过滤数据等功能,方便用户快速筛选数据并录入系统,该组件实现比较复杂,已成功应用在一套大型系统,功能成熟稳定。
ucMyLookUpEdit组件继承PopupContainerEdit,绑定KeyDown、EditValueChanged、Validating三个重要事件。
ucMyLookUpEdit组件继承PopupContainerEdit,绑定KeyDown、EditValueChanged、Validating三个重要事件。
KeyDown:用于捕获用户按键,按向下键Keys.Down弹出下拉窗体并设置光标,跳转到下拉窗体中。按回车键Keys.Enter,执行确认选择操作。
Validating:用于校验输入文本是否存在。
EditValueChanged:用户输入资料,自动过滤数据。
客户系统使用案例:


使用方法,在加载窗体时设置表格过滤控件的数据源:
C# Code:
private void Form1_Load(object sender, EventArgs e)
{
//客户资料筛选组件
txtCustomer.InitControl(new MyLookUpCustomer());
txtCustomer.IsBoundDataField = false;
//供应商资料筛选组件
txtSupplier.InitControl(new MyLookUpSupplier());
txtSupplier.IsBoundDataField = false;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
{
//客户资料筛选组件
txtCustomer.InitControl(new MyLookUpCustomer());
txtCustomer.IsBoundDataField = false;
//供应商资料筛选组件
txtSupplier.InitControl(new MyLookUpSupplier());
txtSupplier.IsBoundDataField = false;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
客户资料数据源:
C# Code:
/// <summary>
/// 客户资料数据源
/// </summary>
public class MyLookUpCustomer : IMyLookUpDataSource
{
private object _LookUpData = null;
private string FILTER = "CustomerCode LIKE '%{0}%' OR CustomerName LIKE '%{1}%' OR ContactTel LIKE '%{2}%'";
public string DisplayMember { get { return "CustomerName"; } }
public string KeyMember { get { return "CustomerCode"; } }
private bool _MultiSelect = false;
public bool MultiSelect
{
get { return _MultiSelect; }
set { _MultiSelect = value; }
}
public object LookUpData
{
get
{
if (_LookUpData == null) _LookUpData = DemoData.Customers;
return _LookUpData;
}
set { _LookUpData = value; }
}
public object GetFiltedData(string searchContent)
{
if (_LookUpData != null)
{
(_LookUpData as DataTable).DefaultView.RowFilter = String.Format(FILTER, searchContent, searchContent, searchContent);
return _LookUpData;
}
else
{
return null;
}
}
/// <summary>
/// 初始化下拉表格的列对象,设置标题宽度
/// </summary>
/// <param name="popup"></param>
/// <param name="gridView"></param>
public void InitGridUI(PopupContainerControl popup, GridView gridView)
{
MyLookUpTool.SetField(gridView, "CustomerCode", "CustomerName", "ContactTel", "", "");
MyLookUpTool.SetCaption(gridView, "客户编码", "客户名称", "联系电话", "", "");
MyLookUpTool.SetWidth(gridView, 100, 250, 100, 0, 0);
MyLookUpTool.SetWidth(popup, gridView);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 客户资料数据源
/// </summary>
public class MyLookUpCustomer : IMyLookUpDataSource
{
private object _LookUpData = null;
private string FILTER = "CustomerCode LIKE '%{0}%' OR CustomerName LIKE '%{1}%' OR ContactTel LIKE '%{2}%'";
public string DisplayMember { get { return "CustomerName"; } }
public string KeyMember { get { return "CustomerCode"; } }
private bool _MultiSelect = false;
public bool MultiSelect
{
get { return _MultiSelect; }
set { _MultiSelect = value; }
}
public object LookUpData
{
get
{
if (_LookUpData == null) _LookUpData = DemoData.Customers;
return _LookUpData;
}
set { _LookUpData = value; }
}
public object GetFiltedData(string searchContent)
{
if (_LookUpData != null)
{
(_LookUpData as DataTable).DefaultView.RowFilter = String.Format(FILTER, searchContent, searchContent, searchContent);
return _LookUpData;
}
else
{
return null;
}
}
/// <summary>
/// 初始化下拉表格的列对象,设置标题宽度
/// </summary>
/// <param name="popup"></param>
/// <param name="gridView"></param>
public void InitGridUI(PopupContainerControl popup, GridView gridView)
{
MyLookUpTool.SetField(gridView, "CustomerCode", "CustomerName", "ContactTel", "", "");
MyLookUpTool.SetCaption(gridView, "客户编码", "客户名称", "联系电话", "", "");
MyLookUpTool.SetWidth(gridView, 100, 250, 100, 0, 0);
MyLookUpTool.SetWidth(popup, gridView);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
供应商数据源:
C# Code:
/// <summary>
/// 供应商资料数据源
/// </summary>
public class MyLookUpSupplier : IMyLookUpDataSource
{
private List<DemoData.MySupplier> _LookUpData = null;
public string DisplayMember { get { return "Name"; } }
public string KeyMember { get { return "Code"; } }
private bool _MultiSelect = false;
public bool MultiSelect
{
get { return _MultiSelect; }
set { _MultiSelect = value; }
}
public object LookUpData
{
get
{
if (_LookUpData == null) _LookUpData = DemoData.Suppliers;
return _LookUpData;
}
set { _LookUpData = value as List<DemoData.MySupplier>; }
}
public object GetFiltedData(string searchContent)
{
if (_LookUpData != null)
{
List<DemoData.MySupplier> source = _LookUpData as List<DemoData.MySupplier>;
//使用LINQ查询对象
List<DemoData.MySupplier> list = source.Where(
r => r.Code.Contains(searchContent) ||
r.Name.Contains(searchContent) ||
r.Tel.Contains(searchContent)).ToList();
return list;
}
else
{
return null;
}
}
/// <summary>
/// 初始化下拉表格的列对象,设置标题宽度
/// </summary>
/// <param name="popup"></param>
/// <param name="gridView"></param>
public void InitGridUI(PopupContainerControl popup, GridView gridView)
{
MyLookUpTool.SetField(gridView, "Code", "Name", "Tel", "", "");
MyLookUpTool.SetCaption(gridView, "编码", "名称", "电话", "", "");
MyLookUpTool.SetWidth(gridView, 100, 250, 100, 0, 0);
MyLookUpTool.SetWidth(popup, gridView);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 供应商资料数据源
/// </summary>
public class MyLookUpSupplier : IMyLookUpDataSource
{
private List<DemoData.MySupplier> _LookUpData = null;
public string DisplayMember { get { return "Name"; } }
public string KeyMember { get { return "Code"; } }
private bool _MultiSelect = false;
public bool MultiSelect
{
get { return _MultiSelect; }
set { _MultiSelect = value; }
}
public object LookUpData
{
get
{
if (_LookUpData == null) _LookUpData = DemoData.Suppliers;
return _LookUpData;
}
set { _LookUpData = value as List<DemoData.MySupplier>; }
}
public object GetFiltedData(string searchContent)
{
if (_LookUpData != null)
{
List<DemoData.MySupplier> source = _LookUpData as List<DemoData.MySupplier>;
//使用LINQ查询对象
List<DemoData.MySupplier> list = source.Where(
r => r.Code.Contains(searchContent) ||
r.Name.Contains(searchContent) ||
r.Tel.Contains(searchContent)).ToList();
return list;
}
else
{
return null;
}
}
/// <summary>
/// 初始化下拉表格的列对象,设置标题宽度
/// </summary>
/// <param name="popup"></param>
/// <param name="gridView"></param>
public void InitGridUI(PopupContainerControl popup, GridView gridView)
{
MyLookUpTool.SetField(gridView, "Code", "Name", "Tel", "", "");
MyLookUpTool.SetCaption(gridView, "编码", "名称", "电话", "", "");
MyLookUpTool.SetWidth(gridView, 100, 250, 100, 0, 0);
MyLookUpTool.SetWidth(popup, gridView);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
ucMyLookUpEdit组件继承PopupContainerEdit组件
C# Code:
/// <summary>
/// C# DevExpress自动下拉弹框表格过滤数据组件
/// </summary>
public class ucMyLookUpEdit : PopupContainerEdit
{
private IMyLookUpDataSource _DataSource;
public IMyLookUpDataSource DataSource
{
get { return _DataSource; }
}
private Form _Owner = null;
private object _TmpData;
/// <summary>
/// 构造器
/// </summary>
public ucMyLookUpEdit()
{
_PopupControl = new ucMyLookUpEditPopup();
_PopupControl.OwnerEditor = this;
this.EditValueChanged += ucMyLookUpEdit_EditValueChanged;
this.Validating += new System.ComponentModel.CancelEventHandler(ucCustomerCombox_Validating);
this.Properties.TextEditStyle = TextEditStyles.Standard;
this.KeyDown += new System.Windows.Forms.KeyEventHandler(ucCustomerCombox_KeyDown);
}
//
//省略代码.....
//
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// C# DevExpress自动下拉弹框表格过滤数据组件
/// </summary>
public class ucMyLookUpEdit : PopupContainerEdit
{
private IMyLookUpDataSource _DataSource;
public IMyLookUpDataSource DataSource
{
get { return _DataSource; }
}
private Form _Owner = null;
private object _TmpData;
/// <summary>
/// 构造器
/// </summary>
public ucMyLookUpEdit()
{
_PopupControl = new ucMyLookUpEditPopup();
_PopupControl.OwnerEditor = this;
this.EditValueChanged += ucMyLookUpEdit_EditValueChanged;
this.Validating += new System.ComponentModel.CancelEventHandler(ucCustomerCombox_Validating);
this.Properties.TextEditStyle = TextEditStyles.Standard;
this.KeyDown += new System.Windows.Forms.KeyEventHandler(ucCustomerCombox_KeyDown);
}
//
//省略代码.....
//
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
功能测试:




VS2017解决方案:


参考文档:
原创C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
【原创】C# Dev用户自定义组件,自动下拉弹框表格过滤数据组件ucMyLookUpEdit
DevExpress组件版本下载、安装与VS开发环境 | Winform C/S框架|C/S开发框架
Winform软件开发框架使用DevExpress组件有那些优势?|软件平台
Winform软件快速开发框架(使用DevExpress正版授权皮肤组件)
DevExpress Winform 采用GridControl表格组件开发的会计凭证控件(C#源码)
基于DevExpress C# Winform 财务会计凭证表格金额录入组件(支持元角分)
【原创】进销存软件开发模板基于C/S架构快速开发框架C#+Winform+DevExpress
VS2015 Winform窗体设置DevExpress预设的图标库(组件Image属性)|C/S框架网
Dev表格RepositoryItemLookUpEdit组件改变值时设置其它列的值-原创
DevExpress皮肤组件打造的C# Winform 开发平台
原创Winform布局开源框架,Winform控件框架,插件化框架|C/S框架网
C/S结构快速开发框架使用的DevExpress常用组件
推荐C# Winform+DevExpress皮肤框架|C/S框架网
C/S结构快速开发框架使用的DevExpress常用组件|C/S开发框架
VS2022解决方案部署DevExpress组件(DevExpress Project Settings)|C/S开发框架
原创C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
【原创】C# Dev用户自定义组件,自动下拉弹框表格过滤数据组件ucMyLookUpEdit
DevExpress组件版本下载、安装与VS开发环境 | Winform C/S框架|C/S开发框架
Winform软件开发框架使用DevExpress组件有那些优势?|软件平台
Winform软件快速开发框架(使用DevExpress正版授权皮肤组件)
DevExpress Winform 采用GridControl表格组件开发的会计凭证控件(C#源码)
基于DevExpress C# Winform 财务会计凭证表格金额录入组件(支持元角分)
【原创】进销存软件开发模板基于C/S架构快速开发框架C#+Winform+DevExpress
VS2015 Winform窗体设置DevExpress预设的图标库(组件Image属性)|C/S框架网
Dev表格RepositoryItemLookUpEdit组件改变值时设置其它列的值-原创
DevExpress皮肤组件打造的C# Winform 开发平台
原创Winform布局开源框架,Winform控件框架,插件化框架|C/S框架网
C/S结构快速开发框架使用的DevExpress常用组件
推荐C# Winform+DevExpress皮肤框架|C/S框架网
C/S结构快速开发框架使用的DevExpress常用组件|C/S开发框架
VS2022解决方案部署DevExpress组件(DevExpress Project Settings)|C/S开发框架
其它资料:
什么是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内容管理系统 |
什么是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内容管理系统 |
在线客服

(VIP会员下载)