VB.NET 2003 DataGrid中用如下方法加入控件后,使用滚动条,如何使DataGrid的表头,不被控件盖住
VB.NET2003
部分代码如下:
添加控件代码:
For i = 0 To mydataset.Tables(0).Rows.Count - 1
Dim btn As New Button
Dim Num_Num as New ArrayList
Dim rectbtn As Rectangle = DataGrid1.GetCellBounds(i, 0) //i为循环变量,循环读取数据库的值
DataGrid1.Controls.Add(btn) //控件添加到DataGrid
Num_Num.Add(btn) //控件添加到ArrayList,传值用
btn.Left = rectbtn.Left //定义控件位置
btn.Top = rectbtn.Top
btn.Width = rectbtn.Width
btn.Height = rectbtn.Height
Next
DataGrid1_Scroll中的代码:
For i = 0 To mydataset.Tables(0).Rows.Count - 1
Dim rectbtn As Rectangle = DataGrid1.GetCellBounds(i, 0)
Num_Num(i).Left = rectbtn.Left
Num_Num(i).Top = rectbtn.Top
Num_Num(i).Width = rectbtn.Width
Num_Num(i).Height = rectbtn.Height
Next
现在可以实现按钮随着滚动条上下左右移动,但是当滚动条向下移动时,按钮会超出DataGrid的显示范围,将DataGrid的表头盖住。
请问各位前辈,这个问题应该如何解决。我用的是VB.NET2003
[解决办法]
问题原因是滚动条向下移动时,最上面1行的cell的top已经不是显示范围的0,已经上移了部分相当于如-12这样,是吗?
如果这样,估计你要加个变量,记下未移动前最初的top值,移动时判断top是否小于记录值,
小于则隐藏这个控件,否则显示控件. 估计最后一行可能也有显示的问题.