DataGridView中内置控件常用事件使用心得

checkbox,button,imagebutton使用dataGridView1_CellContentClick

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
tb.Text+=string.Format("\r\n{0},Row:{1},Column:{2}","单元格内容单击!",e.RowIndex,e.ColumnIndex);
}

combobox使用EditingControlShowing+DropDownClosed,此二事件结合使用可以做到内置combobox一下拉选择了就触发事件


        private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
tb.Text += string.Format("\r\n{0},控件名:{1}", "单元格控件编辑!", e.Control.GetType());
if (e.Control.GetType().Equals(typeof(DataGridViewComboBoxEditingControl)))
{
DataGridViewComboBoxEditingControl editingControl = e.Control as DataGridViewComboBoxEditingControl;
try
{
editingControl.DropDownClosed -= new EventHandler(editingControl_DropDownClosed);
}
catch
{
}
editingControl.DropDownClosed += new EventHandler(editingControl_DropDownClosed);
}
else if (e.Control.GetType().Equals(typeof(DataGridViewTextBoxEditingControl)))
{
DataGridViewTextBoxEditingControl editingControl = e.Control as DataGridViewTextBoxEditingControl;
try
{
}
catch
{
}
}

}
private void editingControl_DropDownClosed(object sender, EventArgs e)
{
DataGridViewComboBoxEditingControl ctl = sender as DataGridViewComboBoxEditingControl;
int r = dataGridView1.CurrentCell.RowIndex;
int c = dataGridView1.CurrentCell.ColumnIndex;
tb.Text += string.Format("\r\n{0},控件名:{1}", "单元格下拉框下拉!", ctl.GetType());
dataGridView1.CellValueChanged -= dataGridView1_CellValueChanged;
}

textbox一般只需要验证事件可使用dgvJointList_CellValidating


        private void dgvJointList_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
int r = dgvJointList.CurrentCell.RowIndex;
int c = dgvJointList.CurrentCell.ColumnIndex;
if (dgvJointList.Columns["diameter"].Index == c ||
dgvJointList.Columns["thickness"].Index == c ||
dgvJointList.Columns["weldLength"].Index == c)
{
string txt = dgvJointList.CurrentCell.EditedFormattedValue.ToString();
string errorMsg;
if (!ValidNumericFF(txt, out errorMsg))
{
e.Cancel = true;
this.errorProvider1.SetError(dgvJointList, errorMsg);
}
else
{
this.errorProvider1.SetError(dgvJointList, "");
}
}
}

单元格内容改变!,Row:-1,Column:0
单元格内容改变!,Row:-1,Column:1
单元格内容改变!,Row:-1,Column:2
单元格内容改变!,Row:-1,Column:3
单元格内容改变!,Row:-1,Column:4
单元格内容改变!,Row:-1,Column:5
单元格内容选择改变!,Row:0,Column:0
单元格控件编辑!,控件名:System.Windows.Forms.DataGridViewTextBoxEditingControl

点击checkboxcell

单元格验证!,Row:0,Column:0
单元格内容选择改变!,Row:0,Column:4
单元格单击!,Row:0,Column:4
单元格内容单击!,Row:0,Column:4

点击comboboxcell

单元格验证!,Row:0,Column:4
单元格内容改变!,Row:0,Column:4
单元格控件编辑!,控件名:System.Windows.Forms.DataGridViewComboBoxEditingControl
单元格内容选择改变!,Row:0,Column:3
单元格单击!,Row:0,Column:3

点击textboxcell

单元格验证!,Row:0,Column:3
单元格控件编辑!,控件名:System.Windows.Forms.DataGridViewTextBoxEditingControl
单元格内容选择改变!,Row:0,Column:0
单元格单击!,Row:0,Column:0
单元格离开!,Row:0,Column:0

DataGridView中内置控件常用事件使用心得

时间: 2024-12-28 11:13:05

DataGridView中内置控件常用事件使用心得的相关文章

Semantic UI中的验证控件的事件的使用

1.Semantic UI中的验证控件,功能挺不错的,中文官网的文档写的都比较详细了,我再这里就不再进行重复了,主要是想说一下它的事件的使用方法,这个可能有部分朋友刚开始接触的时候不太了解 注意看这几个事件:前两个是对于字段验证通过和失败之后的事件的调用,后两个是对整个form是否都验证通过或者失败时调用的事件,于是我们在调用的时候可以这么写 function login() { $(".ui.form").form( { username: { identifier: 'userNa

关于按照不同的标准设定每行表格中内嵌控件的方法

今天小芸在做表格控件的时候遇到一个问题,即根据不同的情况设定不同行的RspostoryItemEdit控件的属性,她用的是Button,于是我开始研究怎么做,大概想到了两种思路,一种是在绑定完数据源后,遍历每一行,设定RspostoryItemEdit控件的属性,先获取到单元格,然后将单元格转化为控件类型,但实际操作中发现,利用   GridView.GetRowCellValue  方法发现获取到的仅仅是该单元格的值,非为控件,于是这种思路放弃了. 第二种思路是,在绑定数据源的时候,也就是Rs

winform 中调用用户控件中 嵌套用户控件的事件

工作了很久,一直没有很深入的了解C#中的委托和事件. 来到新公司,主要的工作就是使用委托和事件操作数据.一下子不知道该如何下手.各方请教大神,得出下面的方法 1. 在A控件中定义一个事件,B控件触发的时候,调用一下这个事件.然后再在A的父级控件中写方法,+=的方式把方法委托给A的事件就行了 窗体: private void Form1_Load(object sender, EventArgs e)        {            UC_Content content = new UC_

在C# 中 模拟触发 控件的事件

((TextBox)uie).RaiseEvent(new RoutedEventArgs(TextBox.KeyDownEvent, ((TextBox)uie)));//控件实例.raiseevent(new routedeventArgs(控件类名.路由事件,控件实例)

Node.js中内置文件系统一些常用的方法总结

文件系统(fs) 首先引入内置模块:var fs = require("fs"); readFile 1.异步读取一个文件的全部内容:fs.readFile("./filename",[options],function(err,data){statements}) // fs.readFile('./88.txt','utf-8',function(err,data){ // if(!err){ // console.log("读取成功");

C# winform datagridview 无需点击两次即可编辑内嵌控件的方法和删除默认的空行的方法

? 1 2 3 4 //点击一下即可对DataGridView中内嵌控件进行编辑,不需要二次点击 dgv.EditMode =DataGridViewEditMode.EditOnEnter; //DataGridView无默认行 dgv.AllowUserToAddRows = false; C# winform datagridview 无需点击两次即可编辑内嵌控件的方法和删除默认的空行的方法

C# dataGridView控件中加入comboBox控件及注意事项

DataGridViewComboBoxColumn pCombo; private void Teaching_Add_Load(object sender, EventArgs e) { MyDBase DB = new MyDBase(DBUser.sserver,DBUser.DBName, DBUser.suser, DBUser.spasswd); DataSet DS= DB.GetRecordset("select * from view_teach_tmp"); da

C# winform datagridview 内嵌控件值改变后立即触发事件,而不需要离开该单元格时才触发,此时需要用到dgv_CurrentCellDirtyStateChanged事件

以下是参考代码 //datagridview内嵌控件值修改事件 private void dgv_CurrentCellDirtyStateChanged(object sender, EventArgs e) { if (dgv.IsCurrentCellDirty) { dgv.CurrentCellDirtyStateChanged -= dgv_CurrentCellDirtyStateChanged; dgv.CommitEdit(DataGridViewDataErrorContex

【安卓】给gallery内"控件"挂载事件,滑动后抬起手指时也触发事件(滑动时不应触发)的解决、!

思路: 1.gallery内控件挂载事件(如:onClickListener)的方法类似listview,可直接在baseAdapter.getView内给控件挂载(具体方法百度). 2.貌似没问题,但滑动后(手指在挂载了事件的控件上)抬起手指时仍会触发事件,这是不对的. 解决方法时,若为滑动(x有偏移),则在gallery.onInterceptTouchEvent中拦截事件,子控件自然接受不到事件. 注:1>不能简单的判断x有偏移就拦截,有些设备犯贱,即使原地抬起也有可能有偏移,此时本应触发