读书人

listview右击弹出菜单解决办法

发布时间: 2012-03-17 19:06:27 作者: rapoo

listview右击弹出菜单
为什么在listview的空白处右击不会执行mouseclick的内容,只有在选中某列时才会执行该事件中的代码,为什么??这样该如何实现只有选中某行才能弹出右键菜单的功能???

[解决办法]
设置listview的ContextMenuStrip属性

C# code
        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)        {            bool showMenu=false;            //要判断是否点击项,控件里至少要有一个项            if (this.listView1.Items.Count > 0)            {                Point point = this.listView1.PointToClient(MousePosition);                ListViewHitTestInfo hitTest = this.listView1.HitTest(point);                if (point.Y >= this.listView1.TopItem.Bounds.Top &&                    hitTest.Item != null)                {//点击的不是列且不是空白区域                    showMenu = true;                }            }            e.Cancel = !showMenu;        }
[解决办法]
通过对listview包含的contextMenuStrip的opening事件处理
如果listview 没有选中任何行,取消菜单的显示

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
if (listView1.SelectedItems.Count == 0)
{
e.Cancel = true;
}
}

读书人网 >C#

热点推荐