none
哪个事件是点击datagridview控件空白处时引发的呢? RRS feed

答案

  •   public int GetRowIndexAt(int mouseLocation_Y)
            {
                if (dataGridView1.FirstDisplayedScrollingRowIndex < 0)
                {
                    return -1;   
                }
                if (dataGridView1.ColumnHeadersVisible == true && mouseLocation_Y <= dataGridView1.ColumnHeadersHeight)
                {
                    return -1;
                }
                int index = dataGridView1.FirstDisplayedScrollingRowIndex;
                int displayedCount = dataGridView1.DisplayedRowCount(true);
                for (int k = 1; k <= displayedCount; )    
                {
                    if (dataGridView1.Rows[index].Visible == true)
                    {
                        Rectangle rect = dataGridView1.GetRowDisplayRectangle(index, true);  // 取该区域的显示部分区域   
                        if (rect.Top <= mouseLocation_Y && mouseLocation_Y < rect.Bottom)
                        {
                            return index;
                        }
                        k++;    
                    }
                    index++;
                }
                return -1;
            }
    
    
    

    调用
    private void dataGridView1_MouseClick(object sender, MouseEventArgs e) 
    { 
      if (GetRowIndexAt(e.Y) == -1) 
      { 
          MessageBox.Show("空白"); 
          dataGridView1.CurrentCell = null; 
      } 
    } 
    


    努力+方法=成功
    • 已标记为答案 启天 2010年3月17日 6:00
    2010年3月16日 9:26

全部回复

  • 你好!
         你尝试一下MouseDown事件,看看是否可以触发!
    周雪峰
    2010年3月15日 16:57
    版主
  •   public int GetRowIndexAt(int mouseLocation_Y)
            {
                if (dataGridView1.FirstDisplayedScrollingRowIndex < 0)
                {
                    return -1;   
                }
                if (dataGridView1.ColumnHeadersVisible == true && mouseLocation_Y <= dataGridView1.ColumnHeadersHeight)
                {
                    return -1;
                }
                int index = dataGridView1.FirstDisplayedScrollingRowIndex;
                int displayedCount = dataGridView1.DisplayedRowCount(true);
                for (int k = 1; k <= displayedCount; )    
                {
                    if (dataGridView1.Rows[index].Visible == true)
                    {
                        Rectangle rect = dataGridView1.GetRowDisplayRectangle(index, true);  // 取该区域的显示部分区域   
                        if (rect.Top <= mouseLocation_Y && mouseLocation_Y < rect.Bottom)
                        {
                            return index;
                        }
                        k++;    
                    }
                    index++;
                }
                return -1;
            }
    
    
    

    调用
    private void dataGridView1_MouseClick(object sender, MouseEventArgs e) 
    { 
      if (GetRowIndexAt(e.Y) == -1) 
      { 
          MessageBox.Show("空白"); 
          dataGridView1.CurrentCell = null; 
      } 
    } 
    


    努力+方法=成功
    • 已标记为答案 启天 2010年3月17日 6:00
    2010年3月16日 9:26