web-dev-qa-db-ja.com

DataGridViewの選択したセルからテキストを取得する

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

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開発者です。

7
James

_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
_
8
lc.

これを試して:

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

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

7
Lullly

単に

MsgBox(GridView1.CurrentCell.Value.ToString)
4
mands
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
2
Wyt

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

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

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は、選択したセルのカンマ区切りの値です。

1
alldayremix

両方の長所.....

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
0
code46

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

dim i = dgv1.CurrentCellAddress.X
dim j = dgv1.CurrentCellAddress.Y
MsgBox(dgv1.Item(i,j).Value.ToString())
0
Peter Juanda

この特定のケースでは、ToString()は、SelectedCellプロパティによって返されたオブジェクトの名前を返します。(現在選択されているセルのコレクション)。

この現象は、オブジェクトにToString()メソッドに対する特定の実装がない場合に発生します。

私たちの場合、セルのコレクションを反復処理し、その値を文字列に累積するだけです。次に、この文字列をTextBoxにプッシュします。

反復を実装する方法をここで見てください:

msdn

0
ofer

または、最初に選択したセルの値だけが必要な場合(または、選択されている場合は選択されたセルが1つだけ)

TextBox1.Text = SelectedCells[0].Value.ToString();
0
Cyril Gupta