4

Winforms ListView を使用していくつかのファイルを表示していますが、エクスプローラーのようにファイルを表示する以外に、アイテムを右クリックしたときに同じエクスプローラーの右クリック メニューを表示したいと考えています。

これは可能ですか?ListView アプリで有効にするにはどうすればよいですか?

4

3 に答える 3

2

実際、右クリックでカスタム コンテキスト メニューを表示するのに問題がありました: ContextMenu からの不安定な動作

私はまだ少し異なって実装しました:

    private void lstModules_MouseDown(object sender , MouseEventArgs e)
    {
        hitTest = lstModules.HitTest(e.Location);

        switch (e.Button)
        {
            case MouseButtons.Right:
                if (hitTest != null && hitTest.Item != null)
                {
                    // right clicking an item in the listview
                    selectedModule = hitTest.Item.Name;

                    lstModules.ContextMenuStrip = mnuContext_OptionsA;
                }
                else
                { 
                    // right clicking in white area of listview
                    lstModules.ContextMenuStrip = mnuContext_OptionsB; 
                }
                break;
        }
    }
于 2010-02-22T00:47:02.977 に答える
2

これを行う唯一の方法は、pinvoke と COM を使用することです。必要なアンマネージ API はSHCreateDefaultContextMenu()だと思います。相互運用が完了したら (最初に pinvoke.net を確認してください)、DEFCONTEXTMENUで必要な他のすべてのことに対して相互運用を行うことができます。簡単ではありません。PIDL の国へようこそ。

于 2010-02-21T23:44:45.303 に答える
1

IContextMenuインターフェイスが必要です。この非常に便利なシリーズも参照してください。

于 2010-12-13T04:05:56.687 に答える