我曾经在表单上有一个DataGridView(DGV)。我格式化并填充了这个,然后使用DGV.Show使它出现在我的表单上。这很好。
我升级了我的表格,包括2个DGV。在一个sub中,我调暗一个新的DGV,像以前一样填充和格式化,然后将其设置为等于表格中的DGV。例如:
Dim pDGV as new DataGridView
with pDGV
.ColumnHeadersVisible = True
.RowHeadersVisible = False
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
.ScrollBars = ScrollBars.Both
.DataSource = pTable
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.ReadOnly = True
end with
frm1.DGV1 = pDGV
frm1.DGV1.show
在调试期间,我可以看到Frm1.DGV似乎与pDGV相同,因为它具有相同数量的列和行等。但是,它无法显示。
我可以恢复为单独填充和格式化每个DGV,但这会复制很多代码。我觉得这会更优雅。
关于为什么.show不起作用的任何想法?
感谢
答案 0 :(得分:0)
您正尝试在运行时将DataGridView
创建的实例分配给已在表单上创建的DataGridView
。这是不可能的。
您可以实施类似的目标来实现目标。
Public Class Form1
Dim _DT As New DataTable
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
_DT.Columns.Add("0")
For i As Integer = 0 To 9
_DT.Rows.Add(i)
Next
FormatDataGridView(DataGridView1)
FormatDataGridView(DataGridView2)
End Sub
Public Sub FormatDataGridView(ByVal dgv As DataGridView)
With dgv
.ColumnHeadersVisible = True
.RowHeadersVisible = False
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
.ScrollBars = ScrollBars.Both
.DataSource = _DT
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.ReadOnly = True
End With
End Sub
End Class
否则,您可以在运行时创建DataGridView
,然后添加到Panel中。