如何获取对话框在winforms中的当前位置?

How to get the current position of the dialog in win forms?

我有一个对话框,我可以将它拖动到 screen.When 我关闭对话框并再次打开。我希望它显示在之前的最后一个位置。

如何在 win 窗体中保存对话框的最后位置?

您需要:

1) 创建您的自定义 "dialog",基本上是 Windows.Forms.Form.
FormStartPosition 属性 设置为 Manual

2) 创建后,在其 OnClosing event save its position somewhere from Location 属性

3) 下次显示时,赋值之前保存的值。

示例和脏解决方案。

在解决方案中,我们有两种形式。 Form1、Form2 和设置静态 class.

public static class Settings
{
    public static int X = 0;
    public static int Y = 0;
}

在 Form1 中,我们有 button1 负责显示 Form2。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2();
        frm.StartPosition = FormStartPosition.Manual;
        frm.Location = new Point(Settings.X, Settings.Y);            
        frm.ShowDialog();
    }
}

在 Form2 中,我们有 ClosingEvent 处理程序:

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        Settings.X = this.Location.X;
        Settings.Y = this.Location.Y;
    }
}

当 Form2 关闭时,我们将位置存储到静态设置 class。稍后我们从这个 class X 和 Y 位置读取。

希望对您有所帮助。