此段代码是从DevExpress官方回复文件中得到的。可以用来优化GridView的操作体验。

/// <summary>  
/// GridView添加新行
/// </summary>
public sealed class GridNewRowHelper
{ private readonly GridView _View;
/// <summary>
/// 构造函数:按键为GridView添加新行(Tab/Enter)
/// </summary>
/// <param name="view">目标GridView</param>
public GridNewRowHelper(GridView view)
{
_View = view;
_View.HiddenEditor += _View_HiddenEditor;
view.GridControl.EditorKeyDown += GridControl_EditorKeyDown;
view.GridControl.KeyDown += new KeyEventHandler(GridControl_KeyDown);
} void _View_HiddenEditor(object sender, EventArgs e)
{
} void GridControl_KeyDown(object sender, KeyEventArgs e)
{
e.Handled = OnKeyDown(e.KeyCode, e.Modifiers);
} void GridControl_EditorKeyDown(object sender, KeyEventArgs e)
{
e.Handled = OnKeyDown(e.KeyCode, e.Modifiers);
}
private bool OnKeyDown(Keys keyCode, Keys modifiers)
{
if (modifiers == Keys.None && (keyCode == Keys.Enter || keyCode == Keys.Tab))
{
return CheckAddNewRow();
}
return false;
} private bool CheckAddNewRow()
{
if (_View.FocusedColumn.VisibleIndex == _View.VisibleColumns.Count - )
{
if (_View.IsNewItemRow(_View.FocusedRowHandle))
{
_View.PostEditor();
_View.UpdateCurrentRow();
}
if (_View.IsLastRow)
return AddNewRow();
}
return false;
} private bool AddNewRow()
{
_View.AddNewRow();
_View.FocusedColumn = _View.VisibleColumns[];
return true;
}
} 使用方法: GridNewRowHelper newRowView=new GridNewRowHelper (targetView);

GridView Tab/Enter键插入新行的更多相关文章

  1. SQL-表的操作(创建表,删除表,更改列,插入新行,更改行的值,删除表中数据)

    一,操作表及列 1.创建表: CREATE TABLE test (ID int  PRIMARY KEY IDENTITY,Name varchar(20) ) 2.删除表 DROP TABLE t ...

  2. insert into 的另一种添加插入新行方式

    语法 1 插入一行 insert into table (field1,field2.....) select value1,value2........; 2 插入多行 insert into ta ...

  3. dataTable 表插入新行

    DataRow dr = dt.NewRow();//定义新行            dr["sumPrice"] = sumPrice;//对应字段赋值            d ...

  4. FlexCel 插入公式和插入新行

    //http://www.tmssoftware.biz/flexcel/doc/vcl/api/FlexCel.Core/TExcelFile/InsertAndCopyRange.html#tex ...

  5. C# 在Word表格中插入新行(表格含合并行)

    public string CreateWordFile(string CheckedInfo)         {             string message = "" ...

  6. Excel表格中无法中间插入新行列! 提示:在当前工作表的最后一行或列中,存在非空单元格,解决方案

    excel中新增行列时报错: 提示:在当前工作表的最后一行或列中,存在非空单元格,所以无法插入新行或新列.

  7. INSERT - 在表中创建新行

    SYNOPSIS INSERT INTO table [ ( column [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT ...

  8. 【新特性速递】单元格导航(上下左右键,TAB键和ENTER键)

    上下左右按键 其实单元格导航(上下左右按键,需要启用表格的ShowSelectedCell属性)一直都存在,只不过之前的版本(v5.5.0)有一些小的BUG. BUG1 比如锁定列存在时,上下左右键只 ...

  9. 将插入的新行放入dataGridView的第一行

    将插入的新行放入dataGridView的第一行 习惯这样用的: dataGridView1.Rows.Add(dataRow);改成:dataGridView1.Rows.Insert(0,data ...

随机推荐

  1. Inno Setup 网页显示插件 webctrl

    原文:Inno Setup 网页显示插件 webctrl ; -- Example.iss -- ; restools ; http://restools.hanzify.org ; 插件名:webc ...

  2. 探索Android该Parcel机制上

    一.先从Serialize说起 我们都知道JAVA中的Serialize机制.译成串行化.序列化……,其作用是能将数据对象存入字节流其中,在须要时又一次生成对象.主要应用是利用外部存储设备保存对象状态 ...

  3. 【SSRS】入门篇(一) -- 创建SSRS项目

    原文:[SSRS]入门篇(一) -- 创建SSRS项目 在本篇中,您将学习如何在 SQL Server Data Tools (SSDT) 中创建报表服务器项目. 报表服务器项目用于创建在报表服务器中 ...

  4. 带你走近AngularJS 之创建自定义指令

    带你走近AngularJS 之创建自定义指令 为什么使用AngularJS 指令? 使用过 AngularJS 的朋友应该最感兴趣的是它的指令.现今市场上的前端框架也只有AngularJS 拥有自定义 ...

  5. Factovisors - PC110704

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/uva10139.html 原创: 作者: ...

  6. 程序媛也话Android 之 自定义控件(垂直方向滑动条)

    Android里已经有足够多的控件供开发者使用,但有时候我们还是会想要一些不一样的东西,比如一些UI特效,比如一些3D动画,今天就讲讲比较basic的东西:自定义控件. 1.效果图 如果项目里需要一个 ...

  7. 欧几里德算法及其扩展(推导&&模板)

    有关欧几里德算法整理: 1.一些相关概念: <1>.整除性与约数: ①一个整数可以被另外一个整数整除即为d|a(表示d整除a,通俗的说是a可以被d整除),其含义也可以说成,存在某个整数k, ...

  8. 搞定KMP匹配算法

    KMP算法介绍及实现——轻松搞定KMP匹配算法 本文介绍了字符串匹配算法中的BF算法和KMP算法.本文中KMP算法介绍部分是关于KMP算法相关文章中最简洁的一篇文章之一.下一篇将继续介绍Horspoo ...

  9. Orchard网上商店模块

    从头开始编写一个Orchard网上商店模块(1) - 介绍 原文地址:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-w ...

  10. JavaScript怎么上传图片

    JavaScript怎么上传图片 在XMLHttpRequest Level2出台之前,大多数的异步上传图片都是利用iframe去实现的. 至于具体的实现细节,我就不在这边啰嗦的,Google一下就有 ...