YAGYU JUBEI

逝去的流云散尽 拥有的一生抓紧
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

datagridview中的行头上下文菜单控制

Posted on 2007-01-08 09:25  YAGYU JUBEI  阅读(654)  评论(0编辑  收藏  举报
数据控件 dataGridView1 上下文菜单 contextMenuStrip1
1 鼠标右键点击行头显示上下文菜单
2 右键点击行头 若本来无选中行 则选中该行
                             若有选中行          则判断选中行是否包含当前行   包含则无操作 不包含则取原选中 然后选中当前行

//上下文菜单控制
        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        
{
            System.Windows.Forms.DataGridView.HitTestInfo hti 
= dataGridView1.HitTest(e.X, e.Y);

            
if ((e.Button == MouseButtons.Right) && (hti.Type == DataGridViewHitTestType.RowHeader))//行头点击鼠标右键
            {
                dataGridView1.ContextMenuStrip 
= contextMenuStrip1;
            }

            
else
            
{
                dataGridView1.ContextMenuStrip 
= null;
            }

            
            
//
            int selectedIndex = hti.RowIndex;//选中行索引
            DataGridViewRow selectedRow = dataGridView1.Rows[selectedIndex];//选中行

            
if (selectedIndex >= 0)
            
{
                
if (dataGridView1.SelectedRows.Count == 0)//无选中行 则选中当前行
                {
                    dataGridView1.ClearSelection();
                    selectedRow.Selected 
= true;
                }

                
else
                
{
                    
if (!dataGridView1.SelectedRows.Contains(selectedRow))//有选中行 是否包含当前行 
                    {
                        dataGridView1.ClearSelection();
                        selectedRow.Selected 
= true;
                    }

                }

            }

        }