如何将DataGridView的光标移动到最后一行?

时间:2022-05-20 14:46:20
我想在点击添加按钮后,DataGridView最底下新增一空行,并且把光标定位到这一行。用什么方法比较好?


现在出现一个情况,我做了2个窗体,分别用BindingSource来绑定数据,第一个数据源光标可以定位到新增空行,但第二个数据源的却不会定位到新增空行,只会定位到现在选中行。我用的Position属性,Find("guid", guid)方法。

请教高手解答。

16 个解决方案

#1


呼唤高手哇

#2


this.dataGridView1.CurrentCell = this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Cells[0];

#3


谢谢,不过我是用这个代码,按照你的可能不太适用

  
myBindingSource.Position = myBindingSource.Find("guid", guid)


我的意思是第一个数据源的BindingSource按我上面写的可以定位光标到新增的空行,而同样写的第二个数据源却不行。不知道是什么原因

#4


用1楼的方法可以实现你的要求,我一般这么做的。

你提供的方法没用过,但是如果单一个可以成功的话,两个也应该是一样的。

2个窗体,分别用BindingSource来绑定数据,
你检查一下是不是设第二个窗体的BindingSource时,设成第一个的了。

#5


this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Cells[0].select();

#6


this.dataGridView1.CurrentCell = this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Cells[0];

#7


首先问下你的数据源是指两个窗体用的是同一个数据源吗?
楼主是不是要两个窗体同步啊?

#8


引用 7 楼 anshien 的回复:
首先问下你的数据源是指两个窗体用的是同一个数据源吗?
楼主是不是要两个窗体同步啊?

不是的哦,2个窗体,两个数据源,很奇怪的,差不多的代码,第一个窗体行,第二就不行

#9


this.dataGridView1.CurrentCell = this.dataGridView1[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.Rows.Count - 1];
这样应该行,我一直这么用的.

#10


引用 9 楼 yanele 的回复:
this.dataGridView1.CurrentCell = this.dataGridView1[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.Rows.Count - 1];
这样应该行,我一直这么用的.

在dataGridView不重新排序的前提下,这样是可以的,但我有排序的需要,所以不适用这个方式

#11


留个脚印,用时好查

#12


在最下面加上

dataGridView1.Focus();
SendKeys.Send("^{End}{Home}");

#13


引用 12 楼 jiajuchang 的回复:
在最下面加上

dataGridView1.Focus();
SendKeys.Send("^{End}{Home}");

还是不行哦。

#14


迷糊了,没道理一个可以另外一个同样的代码却不行的啊。
建议楼主检查下绑定的数据源是否一样,或者换个方法尝试下。可以不?

#15


this.dataGridView1.CurrentCell = this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Cells[0];

#16


引用 14 楼 gac520 的回复:
迷糊了,没道理一个可以另外一个同样的代码却不行的啊。
建议楼主检查下绑定的数据源是否一样,或者换个方法尝试下。可以不?

解释一下,我做了2个窗体,也可以说是2个项目,每个窗体绑定一个数据源(这2个数据源是不同的),
第一个窗体使用
myBindingSource.Position = myBindingSource.Find("guid", guid)
光标可以定位到新增的空行,第二个窗体也是这个代码,只是BindingSource不同就不能定位了。
我替换了数据源也不行,真无语啊


#1


呼唤高手哇

#2


this.dataGridView1.CurrentCell = this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Cells[0];

#3


谢谢,不过我是用这个代码,按照你的可能不太适用

  
myBindingSource.Position = myBindingSource.Find("guid", guid)


我的意思是第一个数据源的BindingSource按我上面写的可以定位光标到新增的空行,而同样写的第二个数据源却不行。不知道是什么原因

#4


用1楼的方法可以实现你的要求,我一般这么做的。

你提供的方法没用过,但是如果单一个可以成功的话,两个也应该是一样的。

2个窗体,分别用BindingSource来绑定数据,
你检查一下是不是设第二个窗体的BindingSource时,设成第一个的了。

#5


this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Cells[0].select();

#6


this.dataGridView1.CurrentCell = this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Cells[0];

#7


首先问下你的数据源是指两个窗体用的是同一个数据源吗?
楼主是不是要两个窗体同步啊?

#8


引用 7 楼 anshien 的回复:
首先问下你的数据源是指两个窗体用的是同一个数据源吗?
楼主是不是要两个窗体同步啊?

不是的哦,2个窗体,两个数据源,很奇怪的,差不多的代码,第一个窗体行,第二就不行

#9


this.dataGridView1.CurrentCell = this.dataGridView1[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.Rows.Count - 1];
这样应该行,我一直这么用的.

#10


引用 9 楼 yanele 的回复:
this.dataGridView1.CurrentCell = this.dataGridView1[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.Rows.Count - 1];
这样应该行,我一直这么用的.

在dataGridView不重新排序的前提下,这样是可以的,但我有排序的需要,所以不适用这个方式

#11


留个脚印,用时好查

#12


在最下面加上

dataGridView1.Focus();
SendKeys.Send("^{End}{Home}");

#13


引用 12 楼 jiajuchang 的回复:
在最下面加上

dataGridView1.Focus();
SendKeys.Send("^{End}{Home}");

还是不行哦。

#14


迷糊了,没道理一个可以另外一个同样的代码却不行的啊。
建议楼主检查下绑定的数据源是否一样,或者换个方法尝试下。可以不?

#15


this.dataGridView1.CurrentCell = this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 1].Cells[0];

#16


引用 14 楼 gac520 的回复:
迷糊了,没道理一个可以另外一个同样的代码却不行的啊。
建议楼主检查下绑定的数据源是否一样,或者换个方法尝试下。可以不?

解释一下,我做了2个窗体,也可以说是2个项目,每个窗体绑定一个数据源(这2个数据源是不同的),
第一个窗体使用
myBindingSource.Position = myBindingSource.Find("guid", guid)
光标可以定位到新增的空行,第二个窗体也是这个代码,只是BindingSource不同就不能定位了。
我替换了数据源也不行,真无语啊