dis*_*kid 0 c# events listview contextmenu winforms
我有一个ListView控件,以网格布局显示文件夹内的文件。我有一个上下文菜单,其中有三个Items应具有以下功能:
ListView上下文菜单中的文件,将显示其所有3ItemsListView第一个中的空白区域,则Item应该不可见。这是我想补充我的事件,并为代码MouseClick我的事件ListView:
this.listviewFiles.MouseClick += new System.Windows.Forms.MouseEventHandler(this.listViewFiles_MouseClick);
private void listViewFiles_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (listviewFiles.FocusedItem.Bounds.Contains(e.Location) == true)
{
contextMenuFilesListbox.Items[0].Visible = false;
contextMenuFilesListbox.Items[1].Visible = false;
}
else
{
contextMenuFilesListbox.Items[0].Visible = true;
contextMenuFilesListbox.Items[1].Visible = true;
}
contextMenuFilesListbox.Show(Cursor.Position);
}
}
Run Code Online (Sandbox Code Playgroud)
发生的事情是,当我右键单击listViewFiles_MouseClick事件中的空白区域时,根本不会触发。因此,我无法Item在上下文菜单中恢复不可见的内容。
该MouseClick不会工作,除非你打的Item标签。该MouseDown是不错的,打一个什么时候也触发SubItem标签或空白(None)。
最好使用ListViewHitTestInfo对象来检查您要击中的东西。
这是应该如何工作的:
private void listView1_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo HI = listView1.HitTest(e.Location);
if (e.Button == MouseButtons.Right)
{
if (HI.Location == ListViewHitTestLocations.None)
{
contextMenuFilesListbox.Items[0].Visible = false;
contextMenuFilesListbox.Items[1].Visible = false;
}
else
{
contextMenuFilesListbox.Items[0].Visible = true;
contextMenuFilesListbox.Items[1].Visible = true;
}
contextMenuFilesListbox.Show(Cursor.Position);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4914 次 |
| 最近记录: |