3

WinForm SplitContainer は、ドラッグまたはクリックするとフォーカスを取得しますが、スプリッターはフォーカスを取得しません。これの副作用は、SplitContainer バーをドラッグすると、他のコントロールで Leave/Validate が発生することであり、これを回避する必要があります。

TabStop と CausesValidation を False に設定しようとしましたが、成功しませんでした。

SplitContainer がフォーカスされないようにする方法はありますか? (大したことではありません。古いスプリッターを引き続き使用できますが、優れたVSプロパティがいくつか失われます...)

4

3 に答える 3

2

SplitContainer コントロールを削除し、手動で Panel コントロールと Splitter コントロールに置き換えます。もう少し努力しますが、よりクリーンな結果になります。

于 2011-10-12T20:53:47.823 に答える
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;
    }
}
于 2011-06-28T17:43:22.430 に答える
0

フィリーニ、

splitcontainer にフォーカスがあるのは、スプリッターを実際に動かしている時だけです。だから私はあなたの検証と休暇イベントでこのようなことをしたいと思います。

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

問題を再現し、上記を追加してももちろんイベントを呼び出しますが、スプリッターの移動中に SplitContainer にフォーカスがあるため、コードの実行は発生しません。

それが役立つことを願っています。

于 2009-07-23T19:51:58.690 に答える