DataGridViewにファイル一覧
投稿者 るきお  (社会人)
投稿日時
2011/11/6 11:47:41
DataGridViewに複数のDataTableを同時に「表示」することはできません。
つまり、DataSetには複数のDataTableが含まれている可能性があるのでDataSetをDataGridViewに渡してあとは自動的に表示されるということはありません。
xvmmtnkさんの例では複数のDataTableを含むDataSetを表示しようとしています。
今回の例ではたまたまDataTableの列が一致しているので、結合して表示してくれてもいいように感じるかもしれませんが、DataSetに含まれているDataTableの列が常に一致しているとは限らず、プログラマー側で表示方法を指定しない限りVBはこれらを自動的に処理してくれません。
技術的に一番簡単な解決方法は、
①単一のDataTableのみ扱いDataGridViewにはDataTableを渡すか、
②表示するDataTableを指定する
方法です。
私は構造的にシンプルな①をお勧めします。
①の例
②の例
つまり、DataSetには複数のDataTableが含まれている可能性があるのでDataSetをDataGridViewに渡してあとは自動的に表示されるということはありません。
xvmmtnkさんの例では複数のDataTableを含むDataSetを表示しようとしています。
今回の例ではたまたまDataTableの列が一致しているので、結合して表示してくれてもいいように感じるかもしれませんが、DataSetに含まれているDataTableの列が常に一致しているとは限らず、プログラマー側で表示方法を指定しない限りVBはこれらを自動的に処理してくれません。
技術的に一番簡単な解決方法は、
①単一のDataTableのみ扱いDataGridViewにはDataTableを渡すか、
②表示するDataTableを指定する
方法です。
私は構造的にシンプルな①をお勧めします。
①の例
Dim table As New DataTable
table.Columns.Add("TEST", GetType(String))
table.Rows.Add("AAA")
table.Rows.Add("BBB")
table.Rows.Add("CCC")
DataGridView1.DataSource = table
②の例
Dim dataset As New DataSet
Dim table As New DataTable("MyTable")
table.Columns.Add("TEST", GetType(String))
table.Rows.Add("AAA")
table.Rows.Add("BBB")
table.Rows.Add("CCC")
dataset.Tables.Add(table)
DataGridView1.DataMember = "MyTable"
DataGridView1.DataSource = dataset
投稿者 xvmmtnk  (中学生)
投稿日時
2011/11/6 23:04:54
ありがとうございます!
実行できました!
↓実行後↓
実行できました!
Public Sub ListLoad()
Dim files As String() = System.IO.Directory.GetFiles( _
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Bvets\Scenarios", "*.txt", System.IO.SearchOption.TopDirectoryOnly)
Dim table As New DataTable
Dim dataClumn1 As DataColumn = table.Columns.Add("画像", GetType(Image))
Dim dataClumn2 As DataColumn = table.Columns.Add("路線名")
Dim dataClumn3 As DataColumn = table.Columns.Add("製作")
Dim dataClumn4 As DataColumn = table.Columns.Add("説明")
Dim dataClumn5 As DataColumn = table.Columns.Add("ファイル名")
For i = 0 To files.Length - 1
Dim sr As New System.IO.StreamReader(files(i), _
System.Text.Encoding.GetEncoding("shift_jis"))
Dim r_image As String = ""
Dim r_title As String = ""
Dim r_author As String = ""
Dim r_comment As String = ""
'内容を一行ずつて読み込む
While sr.Peek() > -1
Dim rs As String = sr.ReadLine()
If rs.Contains("Image = ") Then
r_image = rs.Replace("Image = ", Nothing).ToString
ElseIf rs.Contains("RouteTitle = ") Then
r_title = rs.Replace("RouteTitle = ", Nothing).ToString
ElseIf rs.Contains("Author = ") Then
r_author = rs.Replace("Author = ", Nothing).ToString
ElseIf rs.Contains("Comment = ") Then
r_comment = rs.Replace("Comment = ", Nothing).ToString
End If
End While
'閉じる
sr.Close()
Dim imgFl As String = (Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Bvets\Scenarios\" & r_image)
Dim a_image As Image
If File.Exists(imgFl) Then
a_image = New Bitmap(Image.FromFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Bvets\Scenarios\" & r_image), 120, 90)
Else
a_image = New Bitmap(My.Resources.noimage, 120, 90)
End If
table.Rows.Add(a_image, r_title, r_author, r_comment, files(i).ToString)
Next i
DataGridView1.DataSource = table
End Sub
↓実行後↓
どうすれば、一覧を追加できますか?