0

私の VB.NET アプリケーションには、4 つの列を持つ datagridview (Named = "DGV") があります。データ グリッド行を含む複数のテキスト ファイルを書き込みたい。テキスト ファイルの名前は列 1 のセルの値である必要があり、テキスト ファイルのテキストは列 3 のセルの値である必要があります。添付の画像はすべてをクリアします。親切に助けてください。これらの値は一例であり、実際の値は互いにまったく異なります

4

2 に答える 2

1

これが1つの方法です。最初DataTableに、タスクを簡素化するために DataGridView から を作成しています。次に、Linq-To-DataTable必要なものを取得するために使用していdirます(ディレクトリへのパスです)。

Dim table = New DataTable()
For i As Int32 = 0 To dgv.Columns.Count - 1
    table.Columns.Add(dgv.Columns(i).Name)
Next

For Each gvRow As DataGridViewRow In dgv.Rows
    Dim row = table.Rows.Add()
    For col As Int32 = 0 To dgv.Columns.Count - 1
        row(col) = gvRow.Cells(col).Value
    Next
Next

Dim fileInfos = From r In table
                Select New With {
                   .File = New FileInfo(Path.Combine(dir, r.Field(Of String)(0))),
                   .Content = r.Field(Of String)(2)
                }

テキストファイルを作成し、テキストを書き込みます。

For Each fileInfo In fileInfos
    Try
        fileInfo.File.Create()
        Using writer = fileInfo.File.CreateText()
            writer.Write(fileInfo.Content)
        End Using
    Catch ex As Exception
        ' log etc.
    End Try
Next

.NET バージョン 2.0 を使用していますが、変更できません

.NET 2 バージョンは次のとおりです。

For Each row As DataRow In table.Rows
    If Not row.IsNull(0) AndAlso row(0).ToString().Length <> 0 Then
        Dim path = IO.Path.Combine(dir, row(0).ToString())
        Dim file = New IO.FileInfo(path)
        Try
            file.Create()
            Using writer = file.CreateText()
                Dim content = ""
                If Not row.IsNull(2) Then content = row(2).ToString()
                writer.Write(content)
            End Using
        Catch ex As Exception
            ' log etc.
        End Try
    End If
Next
于 2012-10-11T15:19:22.990 に答える
0

私はこのコードを設計しましたが、完璧に機能しているのだろうかと思います。まず最初に、「Public Class Form1」の後にコードの上部にブール値のプロパティを作成します

Public Property SelectedIdexLock As Boolean = False

現在 Datagride1 の選択が変更されました:

If SelectedIdexLock = True Then
            My.Computer.FileSystem.WriteAllText("C:\Users\YOUR USER NAME HERE\Desktop\" & Datagride1.SelectedCells(0).Value.ToString & ".txt", Datagride1.SelectedCells(2).Value.ToString, False)
        End If

OK、これが最後のステップです。テスト ボタン (Button1) でクリックします。

        Dim RowsCount As Integer = Datagride1.Rows.Count.ToString
        Datagride1.Rows(0).Selected = True
        Datagride1.Rows(0).Selected = False

        For Each row In Datagride1DataSet.Table1.Rows

            Dim i As Integer
            For i = 0 To RowsCount
                If i = RowsCount Then
                    SelectedIdexLock = False
                    Exit Sub
                Else
                    SelectedIdexLock = True
                    Datagride1.Rows(i).Selected = True
                End If

            Next

        Next

あなたはやった!

于 2012-10-12T03:44:06.907 に答える