选择DataGridView的第一行并在文本框中显示单元格内容

时间:2015-04-11 22:28:30

标签: vb.net datagrid

我正在开发一个小型VB应用程序,它从SQL表中检索客户数据(ID,名称,姓氏,购买详细信息)并将其显示在DataGridView上。

同一表单上有4个文本字段,我的目标是每次单击DataGridView行时,其单元格的内容都将显示在这些字段上。

到目前为止一切正常,除此之外:一旦表单完成加载并显示DataGridView,网格的第一行被选中(突出显示)但其数据不会显示在文本字段中。

如果我在该行上单击一次,则显示数据。

所以我的问题是,在表单完成加载后,我无法以编程方式使第一行的数据自动显示在文本字段中。

我试过了

Form1.DataGrid1.Rows(0).Selected = true

以及

Form1.DataGrid1.Rows.GetFirstRow(DataGridViewElementStates.Visible)

但两个代码都不起作用。第一行突出显示,但除非我单击该行,否则数据不会显示在文本字段中。

我正在考虑以编程方式模拟第一行上的鼠标点击,但我不知道这是否是一个可行的解决方案。

我们非常感谢您提供的任何帮助。非常感谢提前!

兰迪

2 个答案:

答案 0 :(得分:0)

选择行的原因只是突出显示,这正是选择的原因。您可以同时选择多行,但显然您无法同时显示其他控件中多行的数据。

您究竟是如何将数据加载到网格中的?如果您通过BindingSource绑定它,就像您应该的那样,那么您实际应该做的是设置Current的{​​{1}}或Position。如果其他控件也被绑定,则会产生预期的效果。

否则,您需要做的是设置BindingSource属性,您只能通过将该行中的单元格指定给CurrentRow属性来执行此操作。

答案 1 :(得分:0)

试试这个..

 private void DataGridView1_SelectionChanged(object sender, EventArgs e)
    {
      if( DataGridView1.SelectedRows.Count = 0 )
      {
        TextBox1.Value = DataGridView1.SelectedRows(0).Cells(0).Value;
        TextBox2.Value = DataGridView1.SelectedRows(0).Cells(1).Value;
        TextBox3.Value = DataGridView1.SelectedRows(0).Cells(2).Value;
        TextBox4.Value = DataGridView1.SelectedRows(0).Cells(3).Value;
      }
    }

另见link