Получить текст из DataGridView выбранных ячеек - PullRequest
7 голосов
/ 07 апреля 2009

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

Я думаю, что это не так просто, как кажется. Я разработчик C, только изучаю VB.NET.

Ответы [ 9 ]

8 голосов
/ 07 апреля 2009

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
6 голосов
/ 21 февраля 2010

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

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

Должно работать :) 1004 *

4 голосов
/ 15 мая 2011

Просто

MsgBox(GridView1.CurrentCell.Value.ToString)
2 голосов
/ 08 августа 2012
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
0 голосов
/ 13 марта 2013

Многие ответы на этой странице относятся только к одной ячейке, и ОП запросил все выбранные ячейки.

Если все, что вам нужно, это содержимое ячейки, и вам не нужны ссылки на фактические выбранные ячейки, вы можете просто сделать это:

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

0 голосов
/ 23 декабря 2010

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

dim i = dgv1.CurrentCellAddress.X
dim j = dgv1.CurrentCellAddress.Y
MsgBox(dgv1.Item(i,j).Value.ToString())
0 голосов
/ 09 апреля 2010

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

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 голосов
/ 07 апреля 2009

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

TextBox1.Text = SelectedCells[0].Value.ToString();
0 голосов
/ 07 апреля 2009

В этом конкретном случае ToString () будет возвращать имя объекта, перезапущенного свойством SelectedCell.

Это происходит, когда объект не имеет конкретной реализации для методов ToString ().

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

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

1010 * MSDN *

...