以编程方式添加,删除以编程方式创建的datagridview中的列和行

时间:2015-12-01 09:33:02

标签: vb.net winforms datagridview

他们我正在尝试创建一个动态文本编辑器,它将有选项卡和选项添加,使用按钮删除datagridviews。同样在datagridviews中,可以通过编程方式添加列和行。我已经达到以下代码:

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        Dim tbpg As TabPage = TabControl1.SelectedTab
        Dim dgview As New DataGridView
        Controls.Add(dgview)
        dgview.Location = New Point(5, 5)
        dgview.Size = New Size(250, 250)
        dgview.ColumnCount = 5
        dgview.RowCount = 5
        tbpg.Controls.Add(dgview)
    End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If RadioButton1.Checked = True Then
            Dim clm As New DataGridViewTextBoxColumn
            clm.DataPropertyName = "Property Name"
            clm.HeaderText = "Header Name"
            clm.Name = "Column Name"
            DataGridView1.Columns.Add(clm)
        ElseIf RadioButton2.Checked = True Then
            DataGridView1.Rows.Add()
        End If
        End Sub

问题是最初没有datagridview,因此行DataGridView1.Columns.Add(clm)会出错。所以我认为应该有currentdatagridviewselecteddatagridview属性。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以更改初始声明的范围,并将其设置为表单的私有。

Private dgview As DataGridView

然后在创建它时,请参阅本地私有

dgview = New DataGridView

最后,在您的专栏创建中,请继续参考dgview

dgview.Columns.Add()

这应该涵盖你的要求。

完整代码示例:

Public Class Form1

    Private dgView As DataGridView

    Private Sub createDGV()

        dgView = New DataGridView
        TabControl1.SelectedTab.Controls.Add(dgView)
        dgView.Location = New Point(5, 5)
        dgView.Size = New Size(250, 250)
        dgView.ColumnCount = 5
        dgView.RowCount = 5

    End Sub

Private Sub addColumn()

    Dim thisDGV As DataGridView = findMyDGV()
    If RadioButton1.Checked = True Then
        Dim clm As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn
        clm.DataPropertyName = "Property Name"
        clm.HeaderText = "Header Name"
        clm.Name = "Column Name"
        thisDGV.Columns.Add(clm)
    ElseIf RadioButton2.Checked = True Then
        thisdgv.Rows.Add()
    End If

End Sub

Private Function findMyDGV() As DataGridView

    For Each ctrl As Control In TabControl1.SelectedTab.Controls
        If TypeOf ctrl Is DataGridView Then
            Return ctrl
        End If
    Next

End Function

    Private Sub TestDGVButton_Click(sender As System.Object, e As System.EventArgs) Handles TestButton.Click

        Try
            createDGV()
            addColumn()
        Catch ex As Exception
            MessageBox.Show(String.Concat("An error occurred: ", ex.Message))
        End Try

    End Sub

End Class