在一个winfrom窗体中有一个DataGridView。在窗体没有加载数据的时候点击右键会显示ContextMenuStrip菜单。
怎么样才能在点击右键的时候先判断DataGridView是否已经加载了数据,如果没数据的话不显示ContextMenuStrip菜单?
下面我判断数据是否绑定没有起作用,请问应该怎么写才对?        private void dgvSingerList_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (dgvSingerList.DataSource == null)
                return;
            if (e.Button == MouseButtons.Right)
            {
                if (e.RowIndex >= 0)
                {
                    dgvSingerList.ClearSelection();
                    dgvSingerList.Rows[e.RowIndex].Selected = true;
                    cmsMenu.Show(MousePosition.X,MousePosition.Y);
                }
            }
        }

解决方案 »

  1.   


            private void dataGridView1_MouseUp(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Right)
                {
                    if(dataGridView1.DataSource==null)
                    {
                        contextMenuStrip1.Visible = false;  //隐藏右击菜单
                    }
                }
            }
      

  2.   

    ContextMenuStrip有一个Opening事件,表示打开菜单的时候
    可以里面添加你的判断逻辑,将事件参数CancelEventArgs.Cancel设置为true,表示不打开菜单private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
    {
        //代码逻辑
        e.Cancel = true;        //不打开菜单
    }
      

  3.   

       private void gvList_MouseDown(object sender, MouseEventArgs e)
            {
                _IsHitInRow = hi.InRow;            if (dataGridView1.SelectedRows.Count==0)
                {
                    this.dataGridView1.ContextMenuStrip = null;
                    return;
                }
                else
                {
                    dataGridView1.ContextMenuStrip = contextMenuStrip1;
    }
    }
      

  4.   

    你用dataset做数据源的话,那你就实例化一个dataset ds=new datase();
    ds=DBHelper.GetDataset();
    int flag=ds.table[0].rows.count;
    然后在判断flag
    if(flag<=0)
    {
    messagebox.show("不存在数据");
    }
    else
    {
    contextMenuStrip.Enable=true;//当然,首先要先把Enable属性默认为false
    }