2

ツリー ビューに関連付けられた contextmenuStrip があります。

たとえば、ツリー構造に 4 つのノードがあり、ノード 4 が選択されています。

動作: ContextMenuStrip - ノード 2 を右クリックすると、そのノードが選択され、コンテキスト メニュー ストリップが開くとすぐにフォーカスがノード 4 に戻ります。

古いコンポーネントの「コンテキスト メニュー」では、この機能は正常に動作します。つまり、ノード 2 は、コンテキスト メニューが開くまでフォーカスを持ちます。

コンテキスト メニューが開いている限り、ノード 2 を選択したいと思います。また、コンテキスト メニューが閉じられると、選択/フォーカスはノード 4 に戻ります。

アドバイスお願いします。

よろしくお願いします

4

1 に答える 1

1

はい、イベントの実行中にフォーカスが変更されると、TreeView コントロールはかなり不安定になります。これが、BeforeXxxx イベントと AfterXxxx イベントを区別する理由の 1 つです。残念ながら、コンテキスト メニュー ストリップが表示されるのが早すぎます。解決策は、NodeMouseClick イベントを実装してコンテキスト メニューを自分で表示することです。このような:

    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
        if (e.Button == MouseButtons.Right) {
            treeView1.SelectedNode = e.Node;
            contextMenuStrip1.Show(treeView1, e.Location);
        }
    }

その後のフォーカスの回復はあなたに任せます。実装してもあまり意味がありません。

于 2010-09-07T15:19:05.400 に答える