创建跨容器选项卡索引

时间:2011-03-01 14:08:47

标签: c# .net winforms visual-studio-2010

我正面临一个我似乎无法解决的问题。 问题出在一个WinForm我有几个容器(TabControls,Panels,...)。

控件中的Tab顺序工作正常(当然)。但现在客户要求更改taborder以从第一个容器(当前tabindex 0,0,1)中的文本框跳转到另一个容器中的控件(当前tabindex 0,1,0,1)。

我的第一种方法是将第二个的tabindex设置为0,0,1,1,但没有效果。标签从0,0,1跳到0,0,2。

我也尝试了其他一些组合但没有结果。

有人能提供我如何解决这个问题的提示吗?

PS:0,0,0表示包含控件的容器,以防万一

2 个答案:

答案 0 :(得分:3)

您可以使用该控件的Leave event,并在后面的代码中手动设置焦点来执行此操作。

private void textBox1_Leave(object sender, System.EventArgs e)
{
    textBox2.Focus();
}

答案 1 :(得分:0)

如果您想使用TAB键,最好不要使用Leave event 例如,如果您使用鼠标进行更改,则会产生一些错误的重定向。

更好地覆盖ProcessCmdKey

这是一个很好的解决方案:

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            bool baseResult = base.ProcessCmdKey(ref msg, keyData);

            //if key is tab and TextBox1 is focused then jump to TextBox2
            if (keyData == Keys.Tab && TextBox1.Focused)
            {
                TextBox2.Focus();
                return true;
            }
            else if (keyData == Keys.Tab && TexBox2.Focused)
            {
                TextBox3.Focus();
                return true;
            }
                return baseResult;
        }

希望它有所帮助。

相关问题