无法将面板位置设置为splitContainer中的当前鼠标位置?

时间:2013-02-14 13:07:03

标签: c# .net winforms

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

我需要获取当前鼠标位置,然后显示左上角必须与鼠标光标位于同一点的panel1

很抱歉这么初学,但我真的不知道怎么做。

我尝试的代码:

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

2 个答案:

答案 0 :(得分: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();
    }

答案 1 :(得分:0)

到目前为止,我可以识别您的问题,您应该使用PointToScreen功能 - 更多内容here