1

我的表单中有 panel1,我将 visible 属性设置为panel1.Visible=false;我想在单击屏幕的任何位置显示此面板。

我需要抓住当前鼠标位置,然后显示panel1左上角必须与鼠标光标在同一点的位置!

很抱歉这么初学者,但我真的坚持如何去做。

我试过的代码:

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

2 回答 2

1

这可能是您完成任务的指南,只需使用.PointToScreenand.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();
    }
于 2013-02-14T13:59:50.137 回答
0

据我所知,你应该使用 PointToScreen 函数 - 更多关于这个here

于 2013-02-14T13:21:48.427 回答