C#ListView控件问题
我用C#中的ListView等控件编一个文件浏览器的程序,用ListView控件显示文件夹的内容。我想像Windows资源管理器一样,右击显示快捷菜单,比如“删除”“重命...
我用C#中的ListView等控件编一个文件浏览器的程序,用ListView控件显示文件夹的内容。我想像Windows资源管理器一样,右击显示快捷菜单,比如“删除”“重命名”“复制”命令。可是那个ListView我没找到哪个针对里面ListItem项目的右击事件。这个快捷菜单当然也可以弹出,可是是针对整个ListView控件的,就是不管有没有选中里面那个项弹出的菜单都一样,我作不到针对某个选择项的右击菜单事件,请问高手们这该怎么解决?
展开
展开全部
首先可以设置 ListView 的 ContextMenuStrip 属性为你的菜单,当然也可以直接通过代码弹出菜单。
在上下文菜单的 Opening 事件中判断,代码如下:
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
bool cancel;
// 获取鼠标坐标,并转换成 ListView 窗口的客户区坐标
Point point = listView1.PointToClient(Cursor.Position);
// 判断鼠标坐标处,是否有 ListViewItem
cancel = listView1.GetItemAt(point.X, point.Y) == null;
// 确定是否取消弹出上下文菜单
e.Cancel = popup;
}
在上下文菜单的 Opening 事件中判断,代码如下:
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
bool cancel;
// 获取鼠标坐标,并转换成 ListView 窗口的客户区坐标
Point point = listView1.PointToClient(Cursor.Position);
// 判断鼠标坐标处,是否有 ListViewItem
cancel = listView1.GetItemAt(point.X, point.Y) == null;
// 确定是否取消弹出上下文菜单
e.Cancel = popup;
}
展开全部
项 是没有事件的.
你想啊,如果每一个项都有一个事件系统资源得占用多大呀.如果你有一百个文件夹,就得有一百个项..那你还能写一百个事件不成??
所以说没有像你那样做的.都是在LISTVIEW上写事件,然后在事件中判断,判断用户选择的是哪个项.然后跟据选择的项不同动态增删除菜单项..
比如说你右击一个项不想让"删除"这个功能项显示出来,你就可以将它隐藏.就可以了.
时间关系没时间写代码,提供了一下思路,希望对你有所帮助.
你想啊,如果每一个项都有一个事件系统资源得占用多大呀.如果你有一百个文件夹,就得有一百个项..那你还能写一百个事件不成??
所以说没有像你那样做的.都是在LISTVIEW上写事件,然后在事件中判断,判断用户选择的是哪个项.然后跟据选择的项不同动态增删除菜单项..
比如说你右击一个项不想让"删除"这个功能项显示出来,你就可以将它隐藏.就可以了.
时间关系没时间写代码,提供了一下思路,希望对你有所帮助.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个我做过,直接用listView.Add(xxxx)就行,xxxx是string类型的数据,你试试就知道了。
你这个应该就是这样的:
string
strtmp;
strtmp
=
r.ReadLine();
liseView.Add(strtmp);
循环就行了。
你这个应该就是这样的:
string
strtmp;
strtmp
=
r.ReadLine();
liseView.Add(strtmp);
循环就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
举个例子:
string
a
=
"textAAA",
b
=
"textBBB",
c
=
"textCCC";
ListViewItem
lvi
=
new
ListViewItem(a);
//创建行对象
lvi.SubItems.AddRange(new
string[]
{
b,
c
});
//向当前项添加子项
listView1.Items.Add(lvi);
//向
ListView
中添加一个新项
如果需要填充多行,则可以将二、三、四句写在循环中。
string
a
=
"textAAA",
b
=
"textBBB",
c
=
"textCCC";
ListViewItem
lvi
=
new
ListViewItem(a);
//创建行对象
lvi.SubItems.AddRange(new
string[]
{
b,
c
});
//向当前项添加子项
listView1.Items.Add(lvi);
//向
ListView
中添加一个新项
如果需要填充多行,则可以将二、三、四句写在循环中。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
控件的属性啊,不过listview控件没有xxxx这个属性,只是示例!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询