我有一个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开发人员。
答案 0 :(得分: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 (上面代码中的Translated)
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
答案 1 :(得分:6)
试试这个:
Dim i = Datagridview1.currentrow.index
textbox1.text = datagridview1.item(columnindex, i).value
它应该工作:)
答案 2 :(得分:4)
简单地
MsgBox(GridView1.CurrentCell.Value.ToString)
答案 3 :(得分: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
答案 4 :(得分:0)
在这种特定情况下,ToString()将返回SelectedCell属性重新生成的对象的名称(当前所选单元格的集合)。
当对象没有针对ToString()方法的特定实现时,会发生此行为。
在我们的例子中,您所要做的就是迭代单元格的集合并将其值累积到字符串中。然后将此字符串推送到TextBox。
看看如何实现迭代:
答案 5 :(得分:0)
或者,如果您只需要第一个选择销售的价值(或者只选择一个选定的单元格)
TextBox1.Text = SelectedCells[0].Value.ToString();
答案 6 :(得分: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
答案 7 :(得分:0)
或者,我们可以使用这样的东西
dim i = dgv1.CurrentCellAddress.X
dim j = dgv1.CurrentCellAddress.Y
MsgBox(dgv1.Item(i,j).Value.ToString())
答案 8 :(得分:0)
此页面上的很多答案仅适用于单个单元格,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
填入所选单元格的逗号分隔值。