C#开发学习笔记:GridControl添加右键快捷菜单
来源:互联网 发布:网络协议详解 编辑:程序博客网 时间:2024/06/06 01:31
1.向窗体拖入控件
2.在窗体加载事件中为快捷菜单的选项绑定自定义事件
foreach (ToolStripMenuItem item in contextMenuStrip1.Items){ string itemname = item.ToString(); item.Click += new EventHandler(ItemClick); }
3.定义自定义事件需要调用的方法
public void ItemClick(object sender, EventArgs e){ ToolStripMenuItem item = sender as ToolStripMenuItem;//将事件触发对象转换为快捷菜单的Item DataRow row = gridView1.GetFocusedDataRow();//获取当前焦点行 string a = gridView1.GetFocusedRowCellDisplayText(gridView1.FocusedColumn); if (item.Text == "复制") { Clipboard.SetDataObject(a);//将要复制的单元格数据存放到剪切板中 } else if (item.Text == "复制新增") { DataTable dt=gridControl1.DataSource as DataTable;//获取当前grid的数据源 dt.ImportRow(row);//将焦点行插入到数据源中 } else if (item.Text == "选择" || item.Text == "全选") { DataTable dt=gridControl1.DataSource as DataTable;//获取所有数据行 if (item.Text == "全选") gridView1.SelectRows(0, dt.Rows.Count - 1);//设置所有数据行被选中 if (item.Text == "选择") gridView1.SelectRow(gridView1.FocusedRowHandle);//设置当前焦点行被选中 } }
4.当一个窗体中有许多Grid时,需要考虑每一个grid单独绑定快捷菜单,这样才能准确的执行操作,所以需要获取窗体中的所有控件
由于控件有父子关系,所以直接使用this.Controls(this代表当前窗体)获取的控件只是窗体的下一级控件,如上图中的一级控件.所以
需要使用递归的方法获取当前这个窗体中的所有控件(包括容器控件中的子控件)
(1).同样在窗体加载事件中循环this.Controls
foreach (Control item in this.Controls){ GetAllControl(item, this); }
(2).定义一个方法和一个泛型集合(用于存储控件)
private static List<Control> ControlList = new List<Control>();public static void GetAllControl(Control control, Form form){ ControlList.Add(control); foreach (Control item in control.Controls) { GetAllControl(item, form);//递归,调用自身 }}
5.递归(百度百科)
(1).递归的定义
递归,就是在运行的过程中调用自己。
构成递归需具备的条件:
函数嵌套调用过程示例
函数嵌套调用过程示例
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。
斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21..... I[1]
斐波纳契数列是典型的递归案例:
递归关系就是实体自己和自己建立关系。
Fib(0) = 1 [基本情况] Fib(1) = 1 [基本情况] 对所有n > 1的整数:Fib(n) = (Fib(n-1) + Fib(n-2)) [递归定义] 尽管有许多数学函数均可以递归表示,但在实际应用中,递归定义的高开销往往会让人望而却步。例如:
阶乘(1) = 1 [基本情况] 对所有n > 1的整数:阶乘(n) = (n * 阶乘(n-1)) [递归定义] 一种便于理解的心理模型,是认为递归定义对对象的定义是按照“先前定义的”同类对象来定义的。例如:你怎样才能移动100个箱子?答案:你首先移动一个箱子,并记下它移动到的位置,然后再去解决较小的问题:你怎样才能移动99个箱子?最终,你的问题将变为怎样移动一个箱子,而这时你已经知道该怎么做的。
如此的定义在数学中十分常见。例如,集合论对自然数的正式定义是:1是一个自然数,每个自然数都有一个后继,这一个后继也是自然数。
德罗斯特效应
德罗斯特效应是递归的一种视觉形式
又例如,我们在两面相对的镜子之间放一根正在燃烧的蜡烛,我们会从其中一面镜子里看到一根蜡烛,蜡烛后面又有一面镜子,镜子里面又有一根蜡烛……这也是递归的表现。
(2).递归的应用
递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。(Fibonacci函数)
(2)问题解法按递归算法实现。
这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。
(3)数据的结构形式是按递归定义的。
如二叉树、广义表等,由于结构本身固有的递归特性,则它们的操作可递归地描述。
递归的缺点:
递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。
递归典型问题: 梵塔问题(汉诺塔问题)
已知有三根针分别用A, B, C表示,在A中从上到下依次放n个从小到大的盘子,现要求把所有的盘子
从A针全部移到B针,移动规则是:可以使用C临时存放盘子,每次只能移动一块盘子,而且每根针上
- C#开发学习笔记:GridControl添加右键快捷菜单
- 添加 鼠标 右键 快捷菜单
- VS2005 添加右键快捷菜单
- C# 添加右键菜单
- 给右键菜单添加cmd快捷通道
- 右键快捷菜单添加新建记事本
- 把EditPlus添加到右键快捷菜单
- sublime添加到右键快捷菜单
- Windows下添加右键快捷菜单
- win10/win7右键添加快捷菜单
- C#开发学习笔记:向Dev控件库中的GridControl添加自定义复选框
- C#快捷菜单的添加
- C#开发右键菜单
- Fedora23 - 右键菜单 添加 打开终端快捷菜单 - dnf
- 右键快捷菜单.doc
- 右键弹出快捷菜单
- AE学习笔记之右键菜单的添加与实现
- ubuntu右键添加打开终端的快捷菜单
- jxl warning: Maximum number of format records exceeded 格式记录数超出最大数限制
- Spring进阶
- Scala中元组Tuples的使用
- pom.xml释义
- SparkStreaming在启动执行步鄹和DStream的理解
- C#开发学习笔记:GridControl添加右键快捷菜单
- 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文本分类器的JAVA实现(上)
- iOS-Charts框架使用用法浅析
- Java中,当表单含有文件上传时,提交数据的如何读取
- android WebView常见功能处理(视频全屏,错误页等)
- mysql
- Oracle 批处理
- python class 一点总结
- 安卓播放视频MediaPlayer