积极答复者
vb.net2008中表格控件的问题

问题
答案
-
考虑到直接往DataGridView加数据不是很好的方案,建议你还是绑定数据源为好。
【示例】
Public class MyClass Public Property Value As String End Class '绑定代码 Dim myclasses As New List(Of MyClass) '添加变量 myclasses.Add(New MyClass With{.Value="a"}) ………… '绑定 DataGridView1.DataSource = myclasses
另外你用Timer加数据?怎么添加的?
- 已编辑 ThankfulHeartModerator 2012年6月9日 23:48 修改代码
- 已标记为答案 小小芝麻开门 2012年6月11日 8:23
全部回复
-
首先感谢您的回答,因为DataGridView控件只能在运行的时候加载行的表格,所以当打开程序Load时,我用到三十六行一行一行的添加好象花了几秒种,而我使用Timer(Interval=100)首先就到取取设备的数据,以至更新的时候,因为行尚未建立而出错,但VB6的MsflexGrid是在设计的时候就可以设置行数,所以不会有问题,请问是否有更好的控件或办法呢?(MsflexGrid控件的缺点是不支持鼠标滚轮而且也不是.netframwork的控件),不想等到这么多的延迟再更新数据,而且给用户视觉上一种电脑慢呑呑的感觉,尽管这并非如此.
- 已编辑 小小芝麻开门 2012年6月9日 17:39
-
考虑到直接往DataGridView加数据不是很好的方案,建议你还是绑定数据源为好。
【示例】
Public class MyClass Public Property Value As String End Class '绑定代码 Dim myclasses As New List(Of MyClass) '添加变量 myclasses.Add(New MyClass With{.Value="a"}) ………… '绑定 DataGridView1.DataSource = myclasses
另外你用Timer加数据?怎么添加的?
- 已编辑 ThankfulHeartModerator 2012年6月9日 23:48 修改代码
- 已标记为答案 小小芝麻开门 2012年6月11日 8:23
-
您上面所说的这种绑定数据源的方法,我没有用过,看不太懂,您能详细一点地示例一下臂如,有一个字符串数组x(35),如何将它绑定到datagridview,让它在第三例以文本的方式显示出来?
我原来做的是在窗体的Load事件中:
DataGridView1.Rows.Add(36)
在Timer的Tick事件中,更新datagrid行列的数据.
For I As Integer = 0 To 35
DataGridView1.Rows.Item(I).Cells(0).Value = I + 1......
DataGridView1.Rows.Item(I).Cells(3).Value =x(n+1)
......
Next
感谢您的指导!
- 已编辑 小小芝麻开门 2012年6月11日 1:27
-
为什么用Timer?我不懂你究竟要干什么?你不能一下子全部遍历然后赋值到dataGridView上吗?难道你的数组还是动态的?
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load '模拟5行数据 For index = 1 To 5 DataGridView1.Rows.Add(index, index) Next End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick '静态局部变量 Static number() As Integer = {5, 4, 3, 2, 1} '循环开始 For index = 0 To 4 '只改变第三列! DataGridView1.Rows(index).Cells(2).Value = number(index) Next End Sub Private Sub DataGridView1_Click(sender As Object, e As EventArgs) Handles DataGridView1.Click Timer1.Enabled = True End Sub End Class
-
是的,我的程序就是象你上边做的一模一样,得到的结果是在load事件时,窗体上显示的外观是,眼睛看到一行一行的表格在添加,表格添加完了,然后数据才会自动填充进去.(我用Timer的原因是我的数据来自监控的设备,设备上的数据更新速度快,所以将来设备端数据而声明的全局变量用Timer刷新datagridview),另外数组并非动态.数组的维数是datagridview的行数
我是想麻烦您用你说的这种方法帮忙诠释,好象上面的示例一样:
Public class MyClass
Public Property Value As String
End Class
'绑定代码
Dim myclasses As New List(Of MyClass)
'添加变量
myclasses.Add(New MyClass With{.Value="a"})
…………
'绑定
DataGridView1.DataSource = myclasses
- 已编辑 小小芝麻开门 2012年6月11日 3:53
-
你不是不用数据绑定么?怎么用了?!
>>DataGridView1.DataSource = myclasses
另外,我关键部分都已经写注释啦!请你自己仔细看吧,好不?
- 已编辑 ThankfulHeartModerator 2012年6月11日 3:55
-
Public class MyClass
Public Property Value As String
End Class
'绑定代码
Dim myclasses As New List(Of MyClass)
'添加变量
myclasses.Add(New MyClass With{.Value="a"})
…………
'绑定
DataGridView1.DataSource = myclasses
请您继续帮解答一下,用您说的绑定数据源的方法,数据如何更新呢?按您的示例代码绑定数据源后,我不知道该如何在运行时内部数据来源的值发生改变后如何更新数据源的值(这也许就是我原来用Timer的真正原因),因为这个值是随时要更新并且显示的。
- 已编辑 小小芝麻开门 2012年6月11日 10:20