Winform开发框架功能细节处理集锦
Winform开发框架功能细节处理集锦
1. 在表格最后一条记录的最后一栏按回车键新增一条记录。 GridView.OptionsNavigation有EnterMoveNextColumn的功能,即按回车自动将焦点移到下一列。但用户要求当移到最后一行最后一列时按回车要自动新增一条记录。 处理表格KeyDown事件: C# Code: /// <summary> /// 处理表格KeyDown事件。 /// <para>在表格最后一条记录的最后一栏按回车键新增一条记录</para> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static void OnDetailGridViewKeyDown(object sender, KeyEventArgs e) { if (!(e.KeyCode == Keys.Enter || e.KeyCode == Keys.Tab)) return; GridView view = (GridView)sender; //最后一条记录 if ((view.FocusedRowHandle == view.RowCount - 1) &&& IsLastEditableColumn(view, view.FocusedColumn)) { e.Handled = true; //下面代码: 最后可编辑栏位,则新增记录. Form dataForm = view.GridControl.FindForm(); if ((dataForm is frmBaseDataForm) & (view.GridControl.EmbeddedNavigator.Buttons.CustomButtons.Count > 0)) { NavigatorButtonBase addButton = view.GridControl.EmbeddedNavigator.Buttons.CustomButtons[0];//新增按钮 view.GridControl.EmbeddedNavigator.Buttons.DoClick(addButton); } } } private static bool IsLastEditableColumn(GridView view, GridColumn focusedColumn) { int idx = view.VisibleColumns.IndexOf(focusedColumn); for (int i = view.VisibleColumns.Count - 1; i >= 0; i--) { GridColumn col = view.VisibleColumns[i]; //忽略不可编辑Column if (!col.OptionsColumn.AllowEdit) continue; if (idx != i) return false; //非最后一个可编辑Column else return true; } return true; } //来源:C/S框架网(www.csframework.com) QQ:1980854898 使用方法: C# Code: gvDetail.KeyDown = new KeyEventHandler(GridMovetor.OnDetailGridViewKeyDown); 2. 从输入框跳转到明细表格并新增记录 有些用户习惯按回车键跳转输入框的焦点,并且自动完成一些操作。比如在主表输入区域的最后一个输入框按回车要跳转到明细表格,当表格无记录的时候要自动新增。 处理细节: 1.自动跳转到明细表格并设置焦点。 2.当明细表没有记录自动新增一条记录。 C# Code: #region 主表最后一个输入框按回车,自动跳转到明细表格。 // //处理细节: // // 1.自动跳转到明细表格并设置焦点。 // 2.当明细表没有记录自动新增一条记录。 // private GridView _DetailView = null; protected virtual void DoJumpToGrid(Control fromControl, GridView toGrid) { //KeyDown事件,处理Enter/Tab键 fromControl.KeyDown = new KeyEventHandler(OnFromControl_KeyDown); _DetailView = toGrid; } protected void OnFromControl_KeyDown(object sender, KeyEventArgs e) { //KeyDown事件,处理Enter/Tab键 if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Tab)) { e.Handled = true; _DetailView.Focus(); if ((_DetailView.RowCount == 0) && (this.IsAddOrEditMode)) { NavigatorButtonBase addButton = _DetailView.GridControl.EmbeddedNavigator.Buttons.CustomButtons[0];//新增按钮 _DetailView.GridControl.EmbeddedNavigator.Buttons.DoClick(addButton); } _DetailView.FocusedRowHandle = 0; _DetailView.FocusedColumn = _DetailView.VisibleColumns[0];//第一个可见栏位 } } #endregion //来源:C/S框架网(www.csframework.com) QQ:1980854898 使用方法: C# Code: //在“国家、区域”输入框内按回车,自动跳转到明细表格并新增一新记录。 this.DoJumpToGrid(txtRegion, gvDetail); 3. 明细表设置“新增记录”的快捷键。 在frmBaseChild窗体处理快捷键,设Form.KeyPreview=True,在KeyDown事件内调用模板方法DoExecuteHotKey。 C# Code: private void frmBaseChild_KeyDown(object sender, KeyEventArgs e) { //处理快捷键 if (e.Alt && (e.KeyCode >= Keys.A) & (e.KeyCode < Keys.Z)) { this.DoExecuteHotKey(e); e.Handled = true; return; } } protected virtual void DoExecuteHotKey(KeyEventArgs e) { if (e.Alt & (e.KeyCode == Keys.X)) this.DoClose(null); if (e.Alt & (e.KeyCode == Keys.Y)) this.DoHelp(null); } 业务窗体重写DoExecuteHotKey方法,处理Alt+Q 键。 C# Code: protected override void DoExecuteHotKey(KeyEventArgs e) { if (e.Alt && this.IsAddOrEditMode) { if (e.KeyCode == Keys.Q) //Alt Q - 新增明细记录 { gvDetail.Focus(); this.CreateOneDetail(gvDetail, (int)DetailButtons.Add);//新增明细记录 gvDetail.ShowEditor();//显示输入框 } else base.DoExecuteHotKey(e); } } //来源:C/S框架网(www.csframework.com) QQ:1980854898 扫一扫加作者微信
参考文档:
Winform开发框架 - 特殊权限控制(扩展权限和自定义按钮功能) 关于Winform开发框架桥接功能 Winform开发框架核心功能 - 主窗体与模块架构 C# Winform开发框架及C# Winform开发平台 用于ERP系统的Winform开发框架或开发平台 C/S框架网提供基于C#.NET前端Winform开发框架及后端WebApi开发框架 原创文档-Winform开发框架提供通用导入Excel功能界面|C/S框架网 Winform开发框架测试程序之测试环境配置|C/S框架网 Winform开发框架测试程序之DALFactory类测试|C/S框架网 Winform开发框架代码生成器 - 支持生成输入组件自适应窗体(LayoutControl) Winform开发框架 - 通用高级查询界面frmAdvancedSearch WinForm开发框架源码下载,试用版下载 轻量级框架-WinFrameworkV2.1 - Winform开发框架 - 简单高效,敏捷开发! 新增功能:保存前本地缓存数据,资料暂存解决方案 - Winform开发框架 Winform开发框架成功案例 - 致远ERP-机械制造行业ERP系统
其它资料:
什么是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内容管理系统 | |