首页 新闻 赞助 找找看

DataGridView获取当前行某列的值

0
悬赏园豆:20 [已解决问题] 解决于 2014-11-21 14:28

  private void xsyGridView1_KeyPress(object sender, KeyPressEventArgs e)         {             if (e.KeyChar.ToString() == "\r")           

  {

                string s = xsyGridView1.Rows[xsyGridView1.CurrentRow.Index-1].Cells["dzyname"].Value.ToString();                                

Program.p.upDatexsy(s);               

  this.Hide();            

}         }

在回车事件中获取DataGridView的值,但一会车总是获取到当前行下一行的值,用上边办法-1的话最后一行获取的值就不正确了,判断INDEX和ROWS.Count的话也不行最后两行INDEX获取的是一个值.请教大神如何在回车时获取当前行指定列的值,谢谢.

ssh800的主页 ssh800 | 初学一级 | 园豆:17
提问于:2014-11-21 09:31
< >
分享
最佳答案
0

1、你这是Winform还是WebForm?

2、感觉你是用错了事件,而非用错了代码。你能否说下你为啥要用KEYPRESS事件?

一般我都用别的事件,比如RowUpdated之类的。

3、还有一种方法是使用支持INotifyChanged接口的对象,然后在对象的PropertyChanged事件里面写代码。

4、所以关键还是你想作啥?

收获园豆:20
爱编程的大叔 | 高人七级 |园豆:30839 | 2014-11-21 10:14

winform

我想在该弹出窗口中按回车键实现将所选行指定列的值返回给另一个Winform窗口的Textbox.text.

ssh800 | 园豆:17 (初学一级) | 2014-11-21 10:21

@ssh800: 因为ENTER默认是将FOCUS定位到下一行,所以你可不可以考虑换个做法?

比如DoubleClick之类的?

你还是没有明白我所说的想作啥的意思。这句话的意思是你得抛开你固有的实现方法,只描述原始需求。

一般如果需要在另外一个窗口显示值得话,我连DOUBLECLICK都不用的,在ROWFOCUS时,直接就显示了。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-11-21 10:36

@爱编程的大叔: 原始的需求是A界面文本框回车,当值多行的时候弹窗并用上下键在弹窗中选择行将行内容返回给弹窗文本框.脱离鼠标操作,作部用键盘实现。

ssh800 | 园豆:17 (初学一级) | 2014-11-21 10:44

@ssh800: 这个需求我知道。

通常这种情况发生的时候,会有一个问题,就是通常都是在新增行发生的。

我已经没有使用微软自带的GRID,不是特别清楚。

新行的取值似乎有个特别的方法。

查了一下, dataGridView1.CurrentRow是当前行。

不过你还得看一下,是不是你只有这一列是可编辑的,如果是这样的话,你一回车,就到下一行去了。如果后面还有可编辑的列,用回车事件就还行。

 

就是说,你后面还有没有可编辑的列是影响很大的,关系到这儿怎么编程的事。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-11-21 10:52

@爱编程的大叔: 该弹窗的数据是从数据库取出来绑定的,均不可编辑和无其它操作。只是选中后返回值。

ssh800 | 园豆:17 (初学一级) | 2014-11-21 10:59

@爱编程的大叔: 方便帮我远程看看吗QQ116716336

ssh800 | 园豆:17 (初学一级) | 2014-11-21 11:00

@ssh800: 我说的可不可编辑,不是指弹窗,是指DataGridview,里面有多列吧?

然后你在其中一列,比如说“货号”,输入AB123以后,一回车,发现有5个同样的货号的商品,就显示弹窗。

这个需求我做了N次了,不过我用的是DEVEXPRESS的GridControl而已。

这个东西,你要学编程,就得多练练,我看你的代码,估计会疯的....

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-11-21 11:15

@爱编程的大叔: 恩,我再自已研究吧,谢了。

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