Получить текст из выбранных ячеек DataGridView

У меня есть 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 Я:

9 ответов


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

попробуйте это:

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

Он должен работать :)


просто

MsgBox(GridView1.CurrentCell.Value.ToString)

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

в этом конкретном случае ToString () вернет имя объекта, повторенное свойством SelectedCell.( коллекция выделенных ячеек).

Это происходит, когда объект не имеет определенного осуществление для toString() методы.

в нашем случае, все, что вам нужно сделать, это перебрать коллекцию клеток и накапливать ее значения в строку. затем нажмите эту строку в текстовое поле.

посмотрите здесь, как реализуйте итерацию:

в MSDN


или, если вам просто нужно значение первого seleted sell (или только одна выбранная ячейка, если она выбрана)

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

лучшее из обоих миров.....

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

или, мы можем использовать что-то вроде этого

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

многие ответы на этой странице относятся только к одной ячейке, и 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 с разделенными запятыми значениями выбранных ячеек.