datagridview 的selectionchanged事件问题!

libra6956 2009-03-24 12:46:30
做了个datagridview,想用改变行后激发SELECTIONCHANGED事件。现在设置了DataGridViewSelectionMode.FullRowSelect,但是datagridview加载数据后,会首先激发2次selectionchanged事件,请问是怎么回事啊?
...全文
319 3 打赏 收藏 转发到动态 举报
写回复
用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 dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs 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_SelectionChanged(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) { } } }

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧