我正在开发一个小型VB应用程序,它从SQL表中检索客户数据(ID,名称,姓氏,购买详细信息)并将其显示在DataGridView上。
同一表单上有4个文本字段,我的目标是每次单击DataGridView行时,其单元格的内容都将显示在这些字段上。
到目前为止一切正常,除此之外:一旦表单完成加载并显示DataGridView,网格的第一行被选中(突出显示)但其数据不会显示在文本字段中。
如果我在该行上单击一次,则显示数据。
所以我的问题是,在表单完成加载后,我无法以编程方式使第一行的数据自动显示在文本字段中。
我试过了
Form1.DataGrid1.Rows(0).Selected = true
以及
Form1.DataGrid1.Rows.GetFirstRow(DataGridViewElementStates.Visible)
但两个代码都不起作用。第一行突出显示,但除非我单击该行,否则数据不会显示在文本字段中。
我正在考虑以编程方式模拟第一行上的鼠标点击,但我不知道这是否是一个可行的解决方案。
我们非常感谢您提供的任何帮助。非常感谢提前!
兰迪
答案 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