7

データを含むデータベース ファイルのセルを含む DataGridView があります。基本的に、DataGridView で選択したセルからテキストを取得し、ボタンをクリックするだけでテキスト ボックスに表示したいと考えています。ボタン クリック イベントのコードは次のとおりです。

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim SelectedThings As String = DataGridView1.SelectedCells.ToString
    TextBox1.Text = SelectedThings
End Sub

ただし、TextBox1では次のようになります。

System.Windows.Forms.DataGridViewSelectedCellCollection

見た目ほど単純ではないと思います。私はVB.NETを学んでいるC開発者です。

4

9 に答える 9

8

DataGridView.SelectedCellsはセルのコレクションであるため、それを呼び出すほど単純ではありませんToString()。コレクション内の各セルをループして、代わりに各セルの値を取得する必要があります。

以下は、選択されたすべてのセルの値のカンマ区切りのリストを作成します。

C#

TextBox1.Text = "";
bool FirstValue = true;
foreach(DataGridViewCell cell in DataGridView1.SelectedCells)
{
    if(!FirstValue)
    {
        TextBox1.Text += ", ";
    }
    TextBox1.Text += cell.Value.ToString();
    FirstValue = false;
}

VB.NET (上記のコードから翻訳)

TextBox1.Text = ""
Dim FirstValue As Boolean =  True 
Dim cell As DataGridViewCell
For Each cell In DataGridView1.SelectedCells
    If Not FirstValue Then
        TextBox1.Text += ", "
    End If
    TextBox1.Text += cell.Value.ToString()
    FirstValue = False
Next
于 2009-04-07T04:37:08.630 に答える
7

これを試して:

Dim i = Datagridview1.currentrow.index
textbox1.text = datagridview1.item(columnindex, i).value

それはうまくいくはずです:)

于 2010-02-21T11:16:00.380 に答える
5

単に

MsgBox(GridView1.CurrentCell.Value.ToString)
于 2011-05-15T06:35:32.667 に答える
2
Private Sub DataGridView1_CellClick(ByVal sender As System.Object, _
                                    ByVal e As DataGridViewCellEventArgs) _
                                    Handles DataGridView1.CellClick
    MsgBox(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value)
End Sub
于 2012-08-07T20:11:07.037 に答える
1

または、このようなものを使用できます

dim i = dgv1.CurrentCellAddress.X
dim j = dgv1.CurrentCellAddress.Y
MsgBox(dgv1.Item(i,j).Value.ToString())
于 2010-12-23T09:14:04.447 に答える
1

このページの多くの回答は単一のセルにのみ適用され、OP は選択されたすべてのセルを要求しました。

必要なのはセルの内容だけで、選択されている実際のセルへの参照を気にしない場合は、次のようにするだけです。

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim SelectedThings As String = DataGridView1.GetClipboardContent().GetText().Replace(ChrW(9), ",")
    TextBox1.Text = SelectedThings
End Sub

Button1をクリックするとTextBox1、選択したセルのカンマ区切りの値が入力されます。

于 2013-03-12T20:55:17.690 に答える
0

両方の長所.....

Private Sub tsbSendNewsLetter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbSendNewsLetter.Click
        Dim tmpstr As String = ""
        Dim cnt As Integer = 0
        Dim virgin As Boolean = True
        For cnt = 0 To (dgvDetails.Rows.Count - 1)
            If Not dgvContacts.Rows(cnt).Cells(9).Value.ToString() Is Nothing Then
                If Not dgvContacts.Rows(cnt).Cells(9).Value.ToString().Length = 0 Then
                    If Not virgin Then
                        tmpstr += ", "
                    End If
                    tmpstr += dgvContacts.Rows(cnt).Cells(9).Value.ToString()
                    virgin = False
                    'MsgBox(tmpstr)
                End If
            End If
        Next
        Dim email As New qkuantusMailer()
        email.txtMailTo.Text = tmpstr
        email.Show()
    End Sub
于 2010-04-09T15:25:29.010 に答える