MS DataGridView.show无法正常工作

时间:2010-06-23 17:28:34

标签: vb.net datagridview

我曾经在表单上有一个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不起作用的任何想法?

感谢

1 个答案:

答案 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中。