社区
C#
帖子详情
datagridview 的selectionchanged事件问题!
libra6956
2009-03-24 12:46:30
做了个datagridview,想用改变行后激发SELECTIONCHANGED事件。现在设置了DataGridViewSelectionMode.FullRowSelect,但是datagridview加载数据后,会首先激发2次selectionchanged事件,请问是怎么回事啊?
...全文
319
3
打赏
收藏
datagridview 的selectionchanged事件问题!
做了个datagridview,想用改变行后激发SELECTIONCHANGED事件。现在设置了DataGridViewSelectionMode.FullRowSelect,但是datagridview加载数据后,会首先激发2次selectionchanged事件,请问是怎么回事啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
libra6956
2009-03-24
打赏
举报
回复
绑定数据最后,注册,还是先激发两次
dell0923
2009-03-24
打赏
举报
回复
像SelectionChanged事件,一般都是在绑定数据后再注册的.如果注册之前要做什么事情,可以调用下事件对应的方法.
kingtiy
2009-03-24
打赏
举报
回复
这是微软设计的时候就是这样的。
我跟过DataGridView的绑定事件过程。
项目_网吧收费系统主程序
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Timers; //Download by http://www.codefans.net namespace qwe { public partial class F_main : Form { //定义SqlDataAdapter的引用 SqlDataAdapter da = new SqlDataAdapter(); //定义Datast的引用 DataSet ds = new DataSet(); public F_main() { string skin = "skin/DiamondBlue.ssk"; InitializeComponent(); skinEngine1.SkinFile = skin; } private void F_main_Load(object sender, EventArgs e) { //定义SQL语句 string str_sql = string.Format("select cardid,cardnumber,cardbalance,transacttime from cardinfo"); //生成适配器实例 da = new SqlDataAdapter(str_sql,share.con); //填充数据 da.Fill(ds); //绑定数据源 dgv_data.DataSource = ds.Tables[0]; } public void shuaxin() { ds.Tables[0].Clear(); da.Fill(ds.Tables[0]); } private void btn_zc_Click(object sender, EventArgs e) { F_zhuce w = new F_zhuce(); w.ShowDialog(); } private void btn_close_Click(object sender, EventArgs e) { this.Close(); } private void btn_chaxun_Click(object sender, EventArgs e) { if (txt_ID.Text != "") { //执行SQL语句 string str_sql1 = string.Format("select count(*) from cardinfo where cardnumber = '{0}'", txt_ID.Text); //创建命名对象 SqlCommand cmd1 = new SqlCommand(str_sql1, share.con); //打开连接 share.con.Open(); //执行操作 int k = Convert.ToInt32(cmd1.ExecuteScalar()); share.con.Close(); if (k > 0) { F_chaxun a = new F_chaxun(); //执行SQL语句 string str_sql = string.Format("select cardnumber,cardpassword,cardbalance,transacttime from cardinfo where cardnumber = '{0}'", txt_ID.Text); //创建命名对象 SqlCommand cmd = new SqlCommand(str_sql, share.con); //打开连接 share.con.Open(); //执行操作 SqlDataReader reader = cmd.ExecuteReader(); //如果读取到数据就将其显示出来 if (reader.Read()) { a.txt_user.Text = reader[0].ToString(); a.txt_mima.Text = reader[1].ToString(); a.txt_yu_e.Text = reader[2].ToString(); a.txt_xiaji.Text = reader[3].ToString(); } share.con.Close(); a.ShowDialog(); } else { MessageBox.Show("没有该会员!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("请输入要查询的会员ID","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Error); } } private void timer1_Tick(object sender, EventArgs e) { this.lbl_time.Text = "现在时间:"+DateTime.Now.ToString(); } private void F_main_FormClosed(object sender, FormClosedEventArgs e) { } private void F_main_FormClosed_1(object sender, FormClosedEventArgs e) { Application.Exit(); } private void
dataGridView
1_CellContentClick(object sender,
DataGridView
CellEventArgs e) { } private void 会员上机ToolStripMenuItem_Click(object sender, EventArgs e) { F_shangji b = new F_shangji(); b.ShowDialog(); } private void btn_updata_Click(object sender, EventArgs e) { F_updatapass m = new F_updatapass(); m.ShowDialog(); } private void btn_del_Click(object sender, EventArgs e) { F_del k = new F_del(); k.ShowDialog(); } private void btn_cz_Click(object sender, EventArgs e) { F_jiaofei qq = new F_jiaofei(); qq.ShowDialog(); } private void 会员下机ToolStripMenuItem_Click(object sender, EventArgs e) { F_xiaji t = new F_xiaji(); t.ShowDialog(); } private void 上机ToolStripMenuItem_Click(object sender, EventArgs e) { F_zhuce w = new F_zhuce(); w.ShowDialog(); } private void 下机ToolStripMenuItem_Click(object sender, EventArgs e) { F_updatapass m = new F_updatapass(); m.ShowDialog(); } private void 网卡充值ToolStripMenuItem_Click(object sender, EventArgs e) { F_jiaofei qq = new F_jiaofei(); qq.ShowDialog(); } private void 会员注销ToolStripMenuItem_Click(object sender, EventArgs e) { F_del k = new F_del(); k.ShowDialog(); } private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) { F_help a = new F_help(); a.ShowDialog(); } private void 会员换机ToolStripMenuItem_Click(object sender, EventArgs e) { F_huanji1 a = new F_huanji1(); a.ShowDialog(); } private void panel2_Paint(object sender, PaintEventArgs e) { } private void 银色清爽ToolStripMenuItem_Click(object sender, EventArgs e) { string skin = "skin/MacOS.ssk"; skinEngine1.SkinFile = skin; } private void 黑色大气ToolStripMenuItem_Click(object sender, EventArgs e) { string skin = "skin/Calmness.ssk"; skinEngine1.SkinFile = skin; } private void 漂亮红色ToolStripMenuItem_Click(object sender, EventArgs e) { string skin = "skin/DiamondBlue.ssk"; skinEngine1.SkinFile = skin; } private void 绿色春意ToolStripMenuItem_Click(object sender, EventArgs e) { string skin = "skin/OneGreen.ssk"; skinEngine1.SkinFile = skin; } private void 黄色秋凉ToolStripMenuItem_Click(object sender, EventArgs e) { string skin = "skin/XPOrange.ssk"; skinEngine1.SkinFile = skin; } private void lbl_time_Click(object sender, EventArgs e) { } private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e) { shuaxin(); } private void cms_youjian_Opening(object sender, CancelEventArgs e) { } private void wuliaToolStripMenuItem_Click(object sender, EventArgs e) { F_zhuce w = new F_zhuce(); w.ShowDialog(); } private void 密码修改ToolStripMenuItem_Click(object sender, EventArgs e) { F_updatapass m = new F_updatapass(); m.ShowDialog(); } private void 网卡充值ToolStripMenuItem1_Click(object sender, EventArgs e) { F_jiaofei qq = new F_jiaofei(); qq.ShowDialog(); } private void 会会员注销ToolStripMenuItem_Click(object sender, EventArgs e) { F_del k = new F_del(); k.ShowDialog(); } private void 会员上机ToolStripMenuItem1_Click(object sender, EventArgs e) { F_shangji b = new F_shangji(); b.ShowDialog(); } private void 会员下机ToolStripMenuItem1_Click(object sender, EventArgs e) { F_xiaji t = new F_xiaji(); t.ShowDialog(); } private void 会员换机ToolStripMenuItem1_Click(object sender, EventArgs e) { F_huanji1 a = new F_huanji1(); a.ShowDialog(); } private void groupBox1_Enter(object sender, EventArgs e) { } private void panel4_Paint(object sender, PaintEventArgs e) { } private void pictureBox1_Click(object sender, EventArgs e) { } private void groupBox1_Enter_1(object sender, EventArgs e) { } private void label4_Click(object sender, EventArgs e) { } private void label5_Click(object sender, EventArgs e) { } private void groupBox4_Enter(object sender, EventArgs e) { } private void groupBox2_Enter(object sender, EventArgs e) { } private void dgv_data_
Selection
Change
d(object sender, EventArgs e) { if (dgv_data.SelectedRows.Count < 1) { return; } txt_name.Text = (string)dgv_data.SelectedRows[0].Cells["cardnumber"].Value; txt_balance.Text = Convert.ToString((int)dgv_data.SelectedRows[0].Cells["cardbalance"].Value); txt_time.Text = Convert.ToString(dgv_data.SelectedRows[0].Cells["transacttime"].Value); } private void button3_Click(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { } private void btn_jiqiadd_Click(object sender, EventArgs e) { } private void label5_Click_1(object sender, EventArgs e) { } private void groupBox3_Enter(object sender, EventArgs e) { } } }
2015.1.10 解决
DataGridView
Selection
Change
d
事件
自动触发
问题
DataGridView
Selection
Change
d
事件
总是在数据源更改时自动触发,这点很讨厌。 可用CellClick和KeyUp
事件
和一个函数替代
Selection
Change
d
事件
private void dvpt_CellClick(object sender,
DataGridView
CellEventArgs e) { if (e.RowIndex < ...
C# 实战项目——快递单打印软件
实践是检验技术的最佳标准。学编程就是用编程!本课由小科带领大家完成一个C#项目——快递单打印软件随着电商的普及,同学们对快递都不陌生,填写快递单和管理快递记录是一项比较烦琐的工作,传统的手工填写和管理快递单的方式会使工作效率非常低,本课程带领同学们一起完成一个快递单打印软件。亮点精彩视频逐步讲解程序开发实现流程讲解附带项目源码,代码注释全主要知识点1、如何使用已有窗体资源 2、分割Form窗体3、
DataGridView
数据表格的使用 4、使用C#操作SQL Server数据库5、以二进制形式在数据库中存储数据 6、自定义控件的应用7、C#打印组件的使用 8、控件的动态添加与删除
关于
datagridview
的
selection
change
d时间
问题
!
DGV控件,根据选取行的不同激发
事件
,如果用
Selection
Change
d比如一下dgvParent.DataSource = dt;//数据绑定this.dgvParent.
Selection
Change
d += new System.EventHandler(this.dgvParent_
Selection
Change
d);//注册
事件
这样做后,
DATAGridView
绑定数据
[C#]
datagridView
实现的数据联动时
selection
Change
d
事件
发生多次的解决方法
Q:对于两个
datagridView
实现的数据联动,主
datagridView
绑定数据时
selection
Change
d
事件
发生多次,什么原因,如何避免? A:
selection
Change
d
事件
MSDN上叙述:“在当前选择出现更改时发生。” 实际应用中,子表数据填充代码要写在
selection
Change
d
事件
响应方法中。 经测试,
selection
Change
d
事件
有如下规律: Sel
C#
110,499
社区成员
642,566
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章