2013-02-14 91 views
1

我在我的表單中有panel1,我將可見屬性設置爲panel1.Visible=false;我想在任何單擊屏幕的位置顯示此面板。無法將面板位置設置爲splitContainer中當前的鼠標位置?

我需要抓住當前鼠標位置,然後顯示panel1,其中左上角必須與鼠標光標位於同一點!

對不起,因爲如此初學,但我真的堅持如何做到這一點。

代碼,我嘗試:

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    panel1.Location = e.Location; 
    panel1.Show(); 
} 
+0

您發佈的代碼有什麼問題? – Blachshma 2013-02-14 13:09:55

+0

面板出現,但在不同的位置!不是與我的光標@Blachshma – 2013-02-14 13:14:54

回答

1

也許這將是你指導你的任務,只需使用.PointToScreen.GetCellDisplayRectangle方法

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     if (e.ColumnIndex == -1) return; 
     var cellRectangle = dataGridView1.PointToScreen(
      dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Location); 
     panel1.Location = new Point(cellRectangle.X + 50, cellRectangle.Y - 175); 
     panel1.Show(); 
    } 
+0

Thankyou同一點上的面板的左上角爲您的答案。它幫助 – 2013-02-14 15:10:28

+0

不客氣':)' – spajce 2013-02-14 15:15:19

0

據我可以識別你的問題,你應該使用PointToScreen功能 - 更多關於這個here