关于datagridview的selectchanged事件,太奇怪了?

大刘0417 2010-05-28 03:17:16
窗体的load:

Private Sub MinecMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
sqlconn.ConnectionString = "server=(local);database=Northwind;integrated security=sspi"
sqlconn.Open()
sqlcomm.CommandText = "select * from Customers"
sqlcomm.CommandType = CommandType.Text
sqlcomm.Connection = sqlconn
sqldt.SelectCommand = sqlcomm
sqldt.Fill(sqldataset, "Customers")
DataGridView1.DataSource = sqldataset.Tables("Customers")
DataGridView1.AutoGenerateColumns = True
End Sub

datagridview1的selectionchanged:

Dim n As Integer = 0
Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
n += 1
MessageBox.Show(n)
End Sub


我发现selectionchanged运行了三次,这是怎么回事?该如何解决,我的这个事件里要有很多的代码,运行次数多了严重影响性能,也不允许出现这种情况,是代码有问题还是其他原因?怎么办???
我只剩下25分了,都给了!
...全文
321 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Forrest23 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pengwei0417 的回复:]
同步改变各个textbox等控件的显示值?
[/Quote]

你可以用

Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

End Sub



大刘0417 2010-05-28
  • 打赏
  • 举报
回复
我是这么处理的:
testdataview = False

DataGridView1.DataSource = sqldataset.Tables("personinfo_goodsinfo")
testdataview = True
DataGridView1.AutoGenerateColumns = True


Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
If testdataview = True Then
selectdatagriviewcells()
End If
End Sub

感谢提示!

我又在网上找了一下关于这方面的问题。

看来只能这样了
EIT王子 2010-05-28
  • 打赏
  • 举报
回复
补充一点,如果你要做到只用一次的话可以用个数字值来确定,这样就可以过滤掉了。0,1,2分别代表三次,看你要用哪次的值咯。。
EIT王子 2010-05-28
  • 打赏
  • 举报
回复
此事件会在选择前,选择时和取消选择单元格(无论是以编程方式还是通过用户操作的方式)时各发生一次。

其实所谓的选择前也就相当于你上次选择的取消。所以是三次。
大刘0417 2010-05-28
  • 打赏
  • 举报
回复
这可咋整?
大刘0417 2010-05-28
  • 打赏
  • 举报
回复
关键是为什么会运行三次!

大刘0417 2010-05-28
  • 打赏
  • 举报
回复
同步改变各个textbox等控件的显示值?
Forrest23 2010-05-28
  • 打赏
  • 举报
回复
确实运行了 三次 想问你用这个DataGridView1_SelectionChanged事件来做什么?
大刘0417 2010-05-28
  • 打赏
  • 举报
回复
Imports System.Data.SqlClient
Imports System.Drawing
Public Class MinecMain
Dim sqlconn As New SqlConnection
Dim sqldt As New SqlDataAdapter
Dim sqldr As SqlDataReader
Dim sqlcomm As New SqlCommand
Dim sqldataset As New DataSet
Private Sub MinecMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
sqlconn.ConnectionString = "server=(local);database=Northwind;integrated security=sspi"
sqlconn.Open()
sqlcomm.CommandText = "select * from Customers"
sqlcomm.CommandType = CommandType.Text
sqlcomm.Connection = sqlconn
sqldt.SelectCommand = sqlcomm
sqldt.Fill(sqldataset, "Customers")
DataGridView1.DataSource = sqldataset.Tables("Customers")
DataGridView1.AutoGenerateColumns = True
End Sub
Dim n As Integer = 0
Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
n += 1
MessageBox.Show(n)
End Sub


窗体里只有这些代码,运行之后就执行3次
charpin 2010-05-28
  • 打赏
  • 举报
回复
你可以设置一个布尔值的数来控制,当其为真时运行,当运行了一次之后即将其设为假
Forrest23 2010-05-28
  • 打赏
  • 举报
回复
你做了什么操作之后 这个事件执行了3次呢
vb.net操作DataGridView控件的用法的集合,包括: 1. DataGridView当前的单元格属性取得、变更 2. DataGridView编辑属性 3. DataGridView最下面一列新追加行非表示 4. DataGridView判断当前选中行是否为新追加的行 5. DataGridView删除行可否设定 6. DataGridView行列不表示和删除 DataGridView控件用法合集(二) 7. DataGridView行列宽度高度设置为不能编辑 8. DataGridView行高列幅自动调整 9. DataGridView指定行列冻结 10. DataGridView列顺序变更可否设定 11. DataGridView行复数选择 12. DataGridView选择的行、列、单元格取得 DataGridView控件用法合集(三) 13. DataGridView指定单元格是否表示 14. DataGridView表头部单元格取得 15. DataGridView表头部单元格文字列设定 16. DataGridView选择的部分拷贝至剪贴板 17.DataGridView粘贴 18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息) DataGridView控件用法合集(四) 19. DataGridView中的ContextMenuStrip属性 20. DataGridView指定滚动框位置 21. DataGridView手动追加列 22. DataGridView全体分界线样式设置 23. DataGridView根据单元格属性更改显示内容 24. DataGridView新追加行的行高样式设置る 25. DataGridView新追加行单元格默认值设置 DataGridView中输入错误数据的处理(五) 26. DataGridView单元格数据错误标签表示 27. DataGridView单元格内输入值正确性判断 28. DataGridView单元格输入错误值事件的捕获 DataGridView控件用法合集(六) 29. DataGridView行排序(点击列表头自动排序的设置) 30. DataGridView自动行排序(新追加值也会自动排序) 31. DataGridView自动行排序禁止情况下的排序 32. DataGridView指定列指定排序 DataGridView控件用法合集(七) 33. DataGridView单元格样式设置 34. DataGridView文字表示位置的设定 35. DataGridView单元格内文字列换行 36. DataGridView单元格DBNull值表示的设定 37. DataGridView单元格样式格式化 38. DataGridView指定单元格颜色设定 39. DataGridView单元格文字字体设置 40. DataGridView根据单元格值设定单元格样式 DataGridView控件用法合集(八) 41. DataGridView设置单元格背景颜色 42. DataGridView行样式描画 43. DataGridView显示行号 44. DataGridView焦点所在单元格焦点框不显示的设定 DataGridView控件用法合集(九) 45. DataGridView中显示选择框CheckBox 46. DataGridView中显示下拉框ComboBox 47. DataGridView单击打开下拉框 48. DataGridView中显示按钮 49. DataGridView中显示链接 50. DataGridView中显示图像 DataGridView控件用法合集(十) 51. DataGridView编辑中单元格控件取得 52. DataGridView输入自动完成 53. DataGridView单元格编辑时键盘KEY事件取得 54. DataGridView下拉框(ComboBox)单元格编辑时事件取得 55. DataGridView下拉框(ComboBox)单元格允许文字输入设定 DataGridView控件用法合集(十一) 56. DataGridView根据值不同在另一列中显示相应图片 57. DataGridView中显示进度条(ProgressBar) 58. DataGridView中添加MaskedTextBox DataGridView控件用法合集(十二) 59. DataGridView中Enter键按下焦点移至旁边的单元格 60. DataGridView行集合化(Group)

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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