我正在使用Winforms ListView來顯示一些文件,但除了顯示像explorer這樣的文件外,我想要在右鍵單擊某個項目時獲得相同的資源管理器右鍵菜單。如何在Winforms ListView中獲取資源管理器右鍵菜單?
這可能嗎?我如何爲我的ListView應用程序啓用它?
我正在使用Winforms ListView來顯示一些文件,但除了顯示像explorer這樣的文件外,我想要在右鍵單擊某個項目時獲得相同的資源管理器右鍵菜單。如何在Winforms ListView中獲取資源管理器右鍵菜單?
這可能嗎?我如何爲我的ListView應用程序啓用它?
我知道這樣做的唯一方法是使用pinvoke和COM來做到這一點。你想要的非託管API,我認爲是SHCreateDefaultContextMenu()。一旦你完成了互操作(首先檢查pinvoke.net),你就可以完成DEFCONTEXTMENU所要求的所有其他事情。這並不容易。歡迎來到馬存保機構的土地。
感謝希望我能從中找到自己的出路。 – 2010-02-21 23:46:35
我看着pinvoke,但這些似乎並不存在。我不能成爲第一個想要這種行爲的人,對吧? – 2010-02-22 04:30:15
您可能是第一個不願意與他人分享的人。有很多顯而易見的東西從那裏丟失。 – 2010-02-22 07:10:16
我其實是有麻煩的自定義上下文菜單顯示用右鍵點擊:Erratic Behavior from 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;
}
}
您需要的IContextMenu接口。另見this very useful series。
你想** **資源管理器菜單或類似資源管理器*的上下文菜單。你現在在你的listview中有什麼代碼?我剛剛在listview中做了一些contextmenu的東西。 – IAbstract 2010-02-21 23:55:07
謝謝,我的意思是根據右鍵單擊哪個文件顯示的資源管理器上下文菜單。現在我已經顯示的代碼使用項目填充列表視圖,但尚未右鍵單擊菜單。 – 2010-02-22 00:01:56
還可以考慮使用shell控件騙子Shell MegaPack - http://www.ssware.com/megapack.htm - 這些是類似Explorer的控件,帶有上下文菜單,拖放,重命名,縮略圖視圖,詳細視圖等,就像Windows資源管理器。 – logicnp 2010-12-13 04:03:00