怎样让Datagridview获得焦点时不自动选中第一行

zhwdai 2019-10-12 10:30:40
我想封装一个控件继承datagridview,但是datagridview在tab键获得焦点的时候,会自动把焦点设置到第一行数据上。我想屏蔽这个动作,tab键进入自定义控件以后不将焦点设置到第一行,应该如何实现?谢谢
...全文
139 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhwdai 2019-10-12
  • 打赏
  • 举报
回复
引用 3 楼 exception92 的回复:
记录用户之前选的行的index,再次进入gotfocus时判断index是否等于0,不等于0 不进行selected=false的设置。
或者考虑直接将tabindex设置为-1,不接受tab键事件。

进入GotFocus事件中的时候,选择行其实已经自动被放到了第一行上面,所以判断选择行这时候就是第一行,无法区分是用户选择的第一行还是自动放置在第一行。
tabstop设为False的话,用户就没法单纯用键盘操作了。
exception92 2019-10-12
  • 打赏
  • 举报
回复
记录用户之前选的行的index,再次进入gotfocus时判断index是否等于0,不等于0 不进行selected=false的设置。 或者考虑直接将tabindex设置为-1,不接受tab键事件。
zhwdai 2019-10-12
  • 打赏
  • 举报
回复
引用 1 楼 exception92 的回复:
GotFocus事件中设置第一行的Selected为false。

谢谢版主回复,GotFocus中设置的话,如果窗体当前焦点在DataGridView,用户alt+tab切换到别的程序,再切换回来的时候会触发GotFocus事件,这样会把用户之前选择的行清除掉。
另外GotFocus事件在用户点击Datagridview也会触发
exception92 2019-10-12
  • 打赏
  • 举报
回复
GotFocus事件中设置第一行的Selected为false。

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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