private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down || e.KeyCode==Keys.Up)
{
this.txtspbh.Text = this.dataGridView1.Rows[this.dataGridView1.CurrentRow.Index].Cells["spbh"].Value.ToString();
}
}
目地:在DataGridView中,通过上下键将选中行的内容返回给TextBox。
通过上边的方法总是获取到上次停留行的内容,不是当前选中行的内容,请教各位大神,怎么能在移动上下键时获取选中行某列的值返回给TextBox.
this.dataGridView1.CurrentRow.Cells["spbh"].Value.ToString()
his.txtspbh.Text = this.dataGridView1.SelectedRows[0].Cells["spbh"].Value.ToString();
以上几种方式均在TextBox显示上次选中行的值。
你可以试试用索引去弄,每次变索引跟着变化
麻烦说的具体点.
@ssh800: 你把上下键分开来写,比如上键 ,每按一次上键 索引-1
if (selectIndex < dgvArticle.RowCount) { selectIndex++; string id = (string)dgvArticle.Rows[selectIndex].Cells[1].Value; string title = (string)dgvArticle.Rows[selectIndex].Cells[2].Value; string url = (string)dgvArticle.Rows[selectIndex].Cells[3].Value;
类似这样
通过前台处理比较好吧,你可以在后台注册js,然后在鼠标上下移动的时候,把需要的参数注入,然后再行事件里面注册,这样你每行的数据都可以获得啊!
这是一个winform的项目,使用CellClick都正常,自定义键盘事件就不行.
@ssh800: gridview里面没有键盘事件吧,你打上断点调试一下。反正如果你想增加该功能应该在行绑定的时候,你通过这个时间估计够呛!
@Mr.Brian: 解决了谢谢
@ssh800: 嗯,ok。只要解决了就是好事!
使用了SelectionChanged达到预期效果