我遇到过与Windows Forms中的DataGridViews有关的最奇怪的错误。
我有一个TabControl,它应该在每个标签页中包含一个停靠的DataGridView。我认为网格专注于更改标签页是很方便的,这样用户可以简单地将鼠标悬停在网格上并在他更改页面时开始滚动。所以,我只是在事件处理程序中添加grids[tabs.SelectedIndex].Focus()
来更改标签页。
但是,真的很奇怪。在我的测试应用程序中,我有三个标签页。如果我在启动应用程序后立即尝试滚动网格,它就不起作用;我必须先点击网格。我在期待这个。但是,如果我更改标签页,除非是第一个,否则在点击之前我无法滚动任何其他网格!
所以,如果我将页面切换到第二页,然后回到第一页,我可以自动滚动该网格而不点击,但如果我切换到第三页,我必须点击网格才能聚焦。
我查看了网格的CanFocus
属性,似乎只有第一个网格将其设置为True。它们都是以编程方式创建的,并且都以相同的方式创建。我不明白为什么他们会有所不同。
有什么想法吗?
答案 0 :(得分:1)
非活动标签页的Visible属性设置为false。 CanFocus的文档说:
为了控制接收 输入焦点,控制必须有一个 分配给它的句柄和可见 和Enabled属性必须都是 对于和,设置为true 所有的父控件
答案 1 :(得分:0)
好吧,我解决了。我的编程错误,我有grids[tabs.TabIndex].Focus()
而不是grids[tabs.SelectedIndex].Focus()
。
哦,好吧。