Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 结合使用TabControl和DataGridView控件_.net_Vb.net - Fatal编程技术网

.net 结合使用TabControl和DataGridView控件

.net 结合使用TabControl和DataGridView控件,.net,vb.net,.net,Vb.net,我不确定这是否可能?需要建议吗 我想将2个不同文件夹中的文件名显示到2个不同的DataGridview控件中,这些控件位于TabControl1的2个选项卡页中。这是我尝试过的代码。通过运行此代码,我可以将文件夹中的文件名显示在Tabpage1的DataGridView1上,但不能显示在tabpage2的DataGridView2上 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs

我不确定这是否可能?需要建议吗

我想将2个不同文件夹中的文件名显示到2个不同的DataGridview控件中,这些控件位于TabControl1的2个选项卡页中。这是我尝试过的代码。通过运行此代码,我可以将文件夹中的文件名显示在Tabpage1的DataGridView1上,但不能显示在tabpage2的DataGridView2上

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    With DataGridView1
        .Columns.Add("Column 0", "TaskName")
        .AutoResizeColumns()
    End With
    With DataGridView2
        .Columns.Add("Column 0", "TaskName")
        .AutoResizeColumns()
    End With

    Dim rowint As Integer = 0
    Dim name As String
    Dim directoryInfo As New System.IO.DirectoryInfo("C:\Demo\Sample1")
    Dim fileInfo = System.IO.Directory.GetFiles(directoryInfo.ToString)
    For Each name In fileInfo

        DataGridView1.Rows.Add()
        Dim filename As String = System.IO.Path.GetFileName(name)
        DataGridView1.Item(0, rowint).Value = filename
        rowint = rowint + 1
    Next
End Sub

Private Sub TabControl1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.Click

    If (TabControl1.SelectedTab.Name.ToString) = "TabPage2" Then
        MessageBox.Show(TabControl1.SelectedTab.Name.ToString)
        Dim rowint As Integer = 0
        Dim name As String
        Dim directoryInfo As New System.IO.DirectoryInfo("C:\Demo\Sample2")
        Dim fileInfo = System.IO.Directory.GetFiles(directoryInfo.ToString)
        For Each name In fileInfo
            DataGridView2.Rows.Add()
            Dim filename As String = System.IO.Path.GetFileName(name)
            DataGridView1.Item(0, rowint).Value = filename
            rowint = rowint + 1
        Next
    End If

End Sub
这是您的代码(参考行号):

您的错误来自第4行,该行引用了错误的DataGridView控件。应该是:

4)   DataGridView2.Item(0, rowint).Value = filename
在代码中,每次单击第二个选项卡时,都需要清除DataGridView2,否则数据网格将开始扩展,并出现额外的空行


不确定在TabControl1 Click事件中包含此代码是否有意义--您可能希望将此代码移动到加载事件中,就像处理第一个数据网格一样。

正如您所建议的,我将整个代码移动到加载事件中。但问题是,当我单击tabpage1或tabpage2时,空白行正在添加到网格中。如何避免添加这些空行?@Ram听起来您仍在使用tabcontrol click事件中的“.rows.Add()”。您能告诉我如何将现有网格变为空吗?我不知道您的代码目前是什么样子。如果将代码从tabcontrol click事件移动到load事件,那么tabcontrol click事件中现在发生了什么?需要查看更多代码,否则,请使用DataGridView2.Rows.Clear()
4)   DataGridView2.Item(0, rowint).Value = filename