2011-06-03 11 views
1

可能かどうかはわかりませんか?必要がありますTabControlとDataGridViewコントロールの組み合わせで作業する

2つの異なるフォルダからTabControl1の2つのタブページに配置された2つの異なるDataGridviewコントロールにファイル名を表示したいとします。ここで私が試したコードです。このコードを実行すると、フォルダから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 

答えて

-1

ここで(参照のための行番号)あなたのコードは次のとおりです。

1) For Each name In fileInfo 
2) DataGridView2.Rows.Add() 
3) Dim filename As String = System.IO.Path.GetFileName(name) 
4) DataGridView1.Item(0, rowint).Value = filename 
5) rowint = rowint + 1 
6) Next 

あなたのエラーが正しくないDataGridViewコントロールを参照しているライン4、から来ています。それは次のようになります。

4) DataGridView2.Item(0, rowint).Value = filename 

あなたのコードでは、あなたがあなたの2番目のタブをクリックするか、そうでなければ、あなたのデータグリッドは余分な空行を展開して起動するたびにDataGridView2をクリアする必要があります。

このコードをTabControl1 Clickイベントに使用することは意味がありません。最初のデータグリッドで行っているように、このコードをLoadイベントに移動するとよいでしょう。

+0

私が提案したように、コード全体をLoadイベントに移動しました。しかし、問題は、tabpage1またはtabpage2のいずれかをクリックすると、空白の行がグリッドに追加されます。これらの空の行を追加しないようにするには? – Ram

+0

@Ramあなたのタブコントロールのクリックイベントで ".Rows.Add()"をやっているようですね。 – LarsTech

+0

既存のグリッドを空にするアイディアを教えてください。 – Ram

関連する問題