WinForm SplitContainer在拖动或单击时获得焦点,而Splitter则不会。 这样做的副作用是,拖动SplitContainer栏会激活其他控件上的Leave / Validate,我需要避免这种情况。
我已经尝试将TabStop和CausesValidation设置为False,但没有成功。
有没有办法阻止SplitContainer聚焦? (不是什么大不了的,我仍然可以使用旧的Splitter,但是我失去了一些不错的VS属性......)
答案 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具有焦点。
希望有所帮助。