1.把一个.rar文件显示到listview里面,前面有一个rar的图标,后面是文件名.2.鼠标右键点击这个项弹出一个菜单
和用户在我的电脑中执行这样的操作弹出的菜单一样,就是有
-----------------
|打开 |
|打开方式... |
|添加到档案文件 |
|添加到xxx.rar |
|---------------|
|剪切 |
|复制 |
---------------|
|创建快捷方式 |
|删除 |
|重命名 |
|---------------|
|属性 |
-----------------
请教前辈,我该调用什么才可以弹出这个对话框?
先谢谢了...
和用户在我的电脑中执行这样的操作弹出的菜单一样,就是有
-----------------
|打开 |
|打开方式... |
|添加到档案文件 |
|添加到xxx.rar |
|---------------|
|剪切 |
|复制 |
---------------|
|创建快捷方式 |
|删除 |
|重命名 |
|---------------|
|属性 |
-----------------
请教前辈,我该调用什么才可以弹出这个对话框?
先谢谢了...
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.WIN32COM.v10.en/shellcc/platform/shell/programmersguide/shell_int/shell_int_extending/extensionhandlers/contextmenuhandlers.htm其他版本的就查找一下Shell中的IContextMenu的用法.
http://www.codeproject.com/cs/miscctrl/OAKListView.asp在listview上添加鼠标右键,请参考代码:
private StringCollection GetContextMent(string filename)
{
StringCollection outmenu = new StringCollection();
outmenu.Add ("打开");
outmenu.Add ("打开方式...");
outmenu.Add ("添加到档案文件");
outmenu.Add ("添加到"+filename);
outmenu.Add ("-");
outmenu.Add ("减切");
//...
return outmenu.Count == 0 ? null : outmenu;
} private void DoMenuAction(object sender, EventArgs e)
{
MenuItem mi = (MenuItem) sender;
string id = "";
if(this.lsvFile .FocusedItem != null)
{
id = lsvFile.FocusedItem.Tag.ToString();
}
DoActionByMenu(id, mi.Text);
} public void DoActionByMenu(string id, string action)
{
string strAction = _htContextMenu[action].ToString() ;
switch (strAction)
{
case "打开":
//执行打开动作;
break;
//其他的依次类推
}
}//另外,在listFile上添加鼠标抬起事件
private void lsvFile_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
ListViewItem lvi = this.lsvFile .GetItemAt(e.X,e.Y);
if(lvi != null)
return;
if(e.Button == MouseButtons.Right )
{
StringCollection actions ;
actions = GetContextMent(lvi.Text);
if (actions != null)
{
ContextMenu cm = new ContextMenu();
foreach (string action in actions)
{
cm.MenuItems.Add(action, new EventHandler(DoMenuAction));
}
cm.Show(this.lsvFile , new Point(e.X, e.Y));
}
}
}//你只要将相应代码做一下调整就可以了。
{
if(e.Button ==MouseButtons.Right)
{
this.listView1.ContextMenu =this.contextMenu1;
}
}
上下文菜单自己按要求创建一个就行了
如果我的鼠标右键是点击别的,比如系统盘符,弹出的菜单应该有个格式化的选项.
而我点击文件是没有这个选项的.如果这样我得做很多判断才行的...其实我说的是调用windows系统的功能,我想这里应该有个接口的,不是吗?