是否存在与在消息处理之间修改焦点相关的任何已知问题

时间:2011-06-30 12:27:31

标签: .net winforms visual-studio

根据我在发布的答案(link's here)上收到的评论,我有一个问题。如果我强迫将焦点放在某个winform元素上会出现什么问题呢?

即。这个方法有什么问题(在容器/面板/框架......组件中循环焦点):

private void containers_max_tabindex_element_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyValue == 9 )
            element_that_has_tabindex_equal_to_containers_min_tab_index_minus_1.Focus();
        }

我已经使用这种方法好几个月了,到目前为止一直很好,没有来自最终用户的投诉

1 个答案:

答案 0 :(得分:1)

这当然是胡说八道,当你按Tab键时,Winforms已经默认了。您不会赢得代码片段的任何奖品,当您将焦点设置为禁用的控件时,它会失败。更好的方法是重写ProcessCmdKey()以识别Keys.Tab。返回true,以便Winforms不会尝试Tab键到下一个控件。