疯狂的DataGridView问题

fish_kun 2009-06-16 12:15:58
我在一个Panel中放置了一个DataGridView外加两个button,DataGridView的大小固定,这个Panel的AutoSize设置为true,当将窗口最大化的时候,点击DataGridView上的单元格,一切正常。如下图所示:

但当窗口不能完全显示时,滚动条出现了,如下图所示,此时问题也出现了:

此时我点击第8行第2列的单元格,结果一下三个单元格被选中,要知道我只点击的是一个单元格,就是上图的单元格,但却出现下图的效果。

此时我主要到,Panel的滚动条已经下滚了一部分,我觉得这个问题应该和它有关,想不通的是为什么用来放DataGridView和button的Panel的滚动条在点击DataGridView的单元格时要滚动呢,并且让DataGridView一下选中三个单元格。不知道大家遇到这样的问题没有,有何方法可以解决呢?
...全文
36 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fish_kun 2009-06-23
  • 打赏
  • 举报
回复
应该和这样一个问题有关,在VS2005下,用C#做的GUI都有这么个特点,如果一个View的Autoscroll设置为true,当View上的任何一个控件获取焦点时,此时如果ScrollBar存在,View都会试图去重新计算ScrollBar的位置,想让这个获取焦点的控件尽量居中显示,如果屏蔽它的这个行为,我想我的这个问题就不会出现了。即无论哪个控件获取焦点,都不必去重设ScrollBar的位置,那样就搞定了。只是我还没有方法来那样做。
光宇广贞 2009-06-16
  • 打赏
  • 举报
回复
不会出问题啊,你是不是有什么事件注册了。
zming 2009-06-16
  • 打赏
  • 举报
回复
疑难杂症,给你一个简单的处理办法(不是解决办法):

设置 Form 的 MinimumSize 属性为适当大小。
fish_kun 2009-06-16
  • 打赏
  • 举报
回复


我初步估计,是右边的滚动条滚动造成的,当我点击第8行的第2列的单元格时,滚动条开始滚动,而此时鼠标还是一个点击过程,这样就导致滚动条滚动一些后,鼠标响应事件伴随着滚动条的滚动,这个过程的鼠标位置记录由于滚动条滚动,从第8行记到了第10行(点击鼠标其实有一个过程,需要时间),完了鼠标的响应事件就设置了三个选中的单元格,因为滚动条滚动带来的鼠标位置恰好是这三个单元格在滚动过程中出现的位置。

但问题是,滚动条它干嘛要滚呢?我可没有写任何相关的代码。
周药师 2009-06-16
  • 打赏
  • 举报
回复
帮顶
netstray 2009-06-16
  • 打赏
  • 举报
回复
没遇到过这种情况,帮你顶一下,请高手解决!顺便也学一招
jasonrush 2009-06-16
  • 打赏
  • 举报
回复
delphi真的很不错,为什么要倒下呢。调试速度超快,生成的文件又小,随便复制个地方就能运行。
outou 2009-06-16
  • 打赏
  • 举报
回复
没遇到过
lunyx_allen 2009-06-16
  • 打赏
  • 举报
回复
C#桌面开发,比delphi差远了。.拿来做做asp.net网页还可以
fish_kun 2009-06-16
  • 打赏
  • 举报
回复
我发现凡是用VS2005做出来的都有这个问题。
dongdongzdy 2009-06-16
  • 打赏
  • 举报
回复
<alert>

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧