是否可以避免Focus on SplitContainer?

时间:2009-07-23 13:26:32

标签: winforms focus splitcontainer

WinForm SplitContainer在拖动或单击时获得焦点,而Splitter则不会。 这样做的副作用是,拖动SplitContainer栏会激活其他控件上的Leave / Validate,我需要避免这种情况。

我已经尝试将TabStop和CausesValidation设置为False,但没有成功。

有没有办法阻止SplitContainer聚焦? (不是什么大不了的,我仍然可以使用旧的Splitter,但是我失去了一些不错的VS属性......)

3 个答案:

答案 0 :(得分:2)

删除SplitContainer控件并使用Panel和Splitter控件手动替换它。多一点努力,但结果更清晰。

答案 1 :(得分:1)

尝试使用此代码:

//This code will move the focus from the splitContainer to TreeView shortly after moved.
private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e) {
    if(this.splitContainer1.CanFocus) {
       this.splitContainer1.ActiveControl = this.treeView1;
    }
}

答案 2 :(得分:0)

菲利尼,

拆分容器唯一有焦点的时间是你实际移动分割器。所以我在验证和离开事件时会这样。

private void Button_Leave(object sender, EventArgs e)
{
    if(SplitContainer.ContainsFocus)
        return;
}

我重现了你的问题,当我添加上面的内容时,它仍然会调用事件,但代码执行不会发生,因为当你移动分割器时,SplitContainer具有焦点。

希望有所帮助。