2013-02-14 1 views
1

У меня есть панель1 в моей форме, я устанавливаю видимое свойство на panel1.Visible=false; Я хочу показать эту панель, где бы я не щелкнул по экрану.Невозможно установить местоположение панели в текущую позицию мыши внутри splitContainer?

Мне нужно захватить текущее местоположение мыши, а затем отобразить panel1, где верхний левый угол должен находиться в той же точке, что и указатель мыши!

Извините за то, что вы новичок, но я действительно застрял на том, как это сделать.

Код, который я попробовал:

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

и что случилось с кодом вас в курсе? – Blachshma

+0

панель появляется, но в разных местах! Не вверху слева от панели в той же точке, что и мой курсор @Blachshma –

ответ

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

Спасибо за ваш ответ. Это помогло –

+0

приветствуется ':)' – spajce

0

Насколько я могу признать вашу проблему, вы должны использовать функцию PointToScreen - больше на этом here

Смежные вопросы