此段代码是从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. App.config

      App.config的学习笔记 昨天基本弄清config的使用之后,再看WP的API,晕了.结果WP不支持system.configuration命名空间,这意味着想在WP上用App.config ...

  2. SQL去掉小数点有效数字后的所有0

    原文:SQL去掉小数点有效数字后的所有0 第一种方法 select cast(2.5000000000000   as  real) select cast(2   as  real) select ...

  3. 自己写CPU第九阶段(5)——实现负载存储指令2(改变运行阶段)

    我们会继续上传新书<自己动手写CPU>.今天是第42篇.我尽量每周四篇,可是近期已经非常久没有实现这个目标了,一直都有事.不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9% ...

  4. android 首开机会在数据链接图标的状态栏打开并自行消失主动

    请找到该文件ConnectivityService.java (alps\frameworks\base\services\java\com\android\server)  在connectivit ...

  5. 输出,变量的使用,子查询,逻辑语句,循环,case..when..then..end多分支语句,Exists(判断存在)

    --------------输出----------------print 'hello world'--以文本形式输出select 'hello world'--以网格形式输出,也可以设置成以文本形 ...

  6. 学SpringMVC收藏

     一个较完整的SpringMVC工程的配置 2014-01-22 17:17:25 标签:java spring springMVC 配置 springSecurity web.xml 原创作品,允许 ...

  7. C++ const关键字用法详解

    1const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目. 事实上这个概念谁都有只是三种声明方式非常相似很容易记混. Bjarne在他的T ...

  8. 使用TotoriseSVN的分支/标签功能

    使用TotoriseSVN的分支/标签功能 http://blog.sina.com.cn/s/blog_5383588c0100o1oo.html 原来在新建一个项目文件夹后,再把Trunk.Bra ...

  9. [Usaco2008 Nov]Guarding the Farm 保卫牧场[DFS]

    Description The farm has many hills upon which Farmer John would like to place guards to ensure the ...

  10. C#编译器闭包机制

    背景 C# 在编译器层面为我们提供了闭包机制(Java7 和 Go 也是这种思路),本文简单的做个解释. 背景知识 你必须了解:引用类型.值类型.引用.对象.值类型的值(简称值). 关于引用.对象和值 ...