首页新闻找找看学习计划

DataGridView上下键事件

-1
悬赏园豆:10 [已关闭问题] 关闭于 2014-12-04 14:24

 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的主页 ssh800 | 初学一级 | 园豆:17
提问于:2014-11-25 15:51
< >
分享
所有回答(3)
-1

你可以试试用索引去弄,每次变索引跟着变化

Aiolos丶M | 园豆:162 (初学一级) | 2014-11-25 16:06

麻烦说的具体点.

支持(1) 反对(0) ssh800 | 园豆:17 (初学一级) | 2014-11-25 16:17

@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;

类似这样

支持(1) 反对(0) Aiolos丶M | 园豆:162 (初学一级) | 2014-11-25 16:29
-1

通过前台处理比较好吧,你可以在后台注册js,然后在鼠标上下移动的时候,把需要的参数注入,然后再行事件里面注册,这样你每行的数据都可以获得啊!

Mr.Brian | 园豆:1518 (小虾三级) | 2014-11-25 16:14

这是一个winform的项目,使用CellClick都正常,自定义键盘事件就不行.

支持(1) 反对(0) ssh800 | 园豆:17 (初学一级) | 2014-11-25 16:16

@ssh800: gridview里面没有键盘事件吧,你打上断点调试一下。反正如果你想增加该功能应该在行绑定的时候,你通过这个时间估计够呛!

支持(0) 反对(0) Mr.Brian | 园豆:1518 (小虾三级) | 2014-11-25 16:22

@Mr.Brian: 解决了谢谢

支持(0) 反对(0) ssh800 | 园豆:17 (初学一级) | 2014-11-25 16:29

@ssh800: 嗯,ok。只要解决了就是好事!

支持(0) 反对(0) Mr.Brian | 园豆:1518 (小虾三级) | 2014-11-25 16:35
-2

使用了SelectionChanged达到预期效果

ssh800 | 园豆:17 (初学一级) | 2014-11-25 16:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册