Получить текст из выбранных ячеек 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
Он должен работать :)
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() методы.
в нашем случае, все, что вам нужно сделать, это перебрать коллекцию клеток и накапливать ее значения в строку. затем нажмите эту строку в текстовое поле.
посмотрите здесь, как реализуйте итерацию:
или, если вам просто нужно значение первого 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
с разделенными запятыми значениями выбранных ячеек.