标题:[求助]DataGridView的一个超级变态的问题
取消只看楼主
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
 问题点数:0 回复次数:16 
[求助]DataGridView的一个超级变态的问题



搞了好几天,本以为搞定了呢...唉..问题接着一个来!!!
黑线其实是TextBox..Enter会弹出一个窗体供选择用..
下面的DataGridView...重点说一下:首先是.默认的方法是这样的,按Enter键,焦点往下面移动,后来重写了一下ProcessCmdKey()方法,使其改变为焦点右移...OK...貌似可以啦..但是...
问题1:
在没有内容的DataGridView上按Enter...焦点右移,,但是当你编辑某个单元格时..是编辑啊..即光标出现后..此时按Enter..焦点又下移啦!!!
问题2:
跟问题1有关系..如果先进行上面(DataGridView上面)的操作,没事..But,,如果先操作DataGridView..并且是第一次(注意啊,是第一次)发生问题1的情况下,然后再返回上面操作的时候,不会有任何数据填入!!!好像没有发生一样

P.S..我采用绑定DataTable的方法来获取另一个窗体里传输的值..

高手帮帮忙吧..兄弟都快愁死啦@!!!
搜索更多相关主题的帖子: DataGridView 超级 焦点 Enter 
2007-10-08 18:22
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 
谢谢..不过我还是没太懂...好麻烦的啊..

msdn == 葵花宝典!!!
QQ:122768959
2007-10-09 14:26
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 

其实..不止是这个啦..
主要的是..DataGridView的Enter问题...当dataGridview处于编辑状态时..就时正在单元格里写东西时...按Enter就不行啦...重写的方法如下:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)//重写键盘回车代码
{
if ((ActiveControl is DataGridView) && (keyData == Keys.Enter) && (stockDataGridView.CurrentCell.ColumnIndex == 0 || stockDataGridView.CurrentCell.ColumnIndex == 1))
{
tempData = stockDataGridView.CurrentCell.RowIndex;
SelectGoods selectGoods = new SelectGoods();
selectGoods.ShowInTaskbar = false;
selectGoods.ShowDialog();
if(stockDataGridView.CurrentCell.ColumnIndex == 0)
System.Windows.Forms.SendKeys.Send("{TAB}");

}
if ((ActiveControl is DataGridView) && ( keyData == Keys.Enter))// || keyData == Keys.Up || keyData == Keys.Down ))
{
if (keyData == Keys.Enter)
{
System.Windows.Forms.SendKeys.Send("{TAB}");
return true;
}
if (keyData == Keys.Down)
System.Windows.Forms.SendKeys.Send("{TAB}");
else
SendKeys.Send("+{TAB}");
return true;
}
else
return base.ProcessCmdKey(ref msg, keyData);

}


msdn == 葵花宝典!!!
QQ:122768959
2007-10-09 16:21
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 

嗯...重写方法...
我现在都被搞晕啦啦啦...


msdn == 葵花宝典!!!
QQ:122768959
2007-10-10 10:36
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 
这个重写的控件怎么引用啊..是不是全部用代码啊?...
好像不能拖拉出来是吧?

msdn == 葵花宝典!!!
QQ:122768959
2007-10-10 11:03
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 
那么..shift怎么绑定呢?
另外..还是那个问题..就厡题的第二问:当处于编辑状态的时候,按Enter..还是那样..上面的第二个窗体传不过来值!!!...
我试了一下..我本来试将textBox绑定DataTable的..这样会出现问题...
然后..在XXXDesigner.cs里修改..textBox访问属性为public static 后..然后在第二个窗体直接赋值给textBox就没有问题了..专家解释一下好吗?

msdn == 葵花宝典!!!
QQ:122768959
2007-10-10 15:11
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 
还有...把控件设成static的好麻烦啊...
会非常的麻烦..麻烦到你不可想象

msdn == 葵花宝典!!!
QQ:122768959
2007-10-10 15:46
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 
crazymk:
前面的都没问题了..就是后面那个问题啦
我也搞不清它怎么会影响到它呢..
但结果确实这样..你的QQ多少?我的122768959:::
我在这里没法给你说清楚..我还是把源码发给你吧..你可能不会相信!!!
但确实是这样!!

msdn == 葵花宝典!!!
QQ:122768959
2007-10-10 16:01
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 
界面如图..上面的黑线条其实是画上去的!真正的控件是textBox..textBox绑定的public static 的dataTable...
下面的dataGridView和上面的原理一样,只是两个控件不一样罢了!!!双击(或者Enter)上面的textBox.就会弹出相应的窗体,窗体里也有dataGridView控件连接数据库以获取数据,,然后双击某行选择数据...送给绑定在textBox上的dataTable...来实现数据的跨窗体传递!!!开始都没发现什么问题,一切正常..正当我高兴的时候,,突然..我编辑了下面的dataGridView的一个单元格(和textBox在同一窗体的dataGridView,也就是如图中的dataGridView).然后Enter..焦点后移..还没发现问题..当我关闭再打开(该窗体是从另一个窗体单击按钮产生的,不是直接运行后产生的..因为重新运行调试没问题..但是关闭该窗体再打开还说有问题,,不知道你听明白没..MainForm-->该窗体-->选择窗体 ..三层窗体..)就发现什么也没传过来!!!可郁闷啦..然后重新调试..没问题..但是如果..先编辑..再操作textBox..出现问题啦..我也纳闷怎么会影响到它呢???奇怪!!

msdn == 葵花宝典!!!
QQ:122768959
2007-10-10 16:26
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 
但是.如果我的textBox不绑定dataTable..而是直接改成public static 属性...
在小窗体里..直接给textBox的Text属性赋值..就没有问题啦..难道是DataTable的问题?还是?..

msdn == 葵花宝典!!!
QQ:122768959
2007-10-10 17:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-175910-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.232343 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved