将窗体移动到指定的屏幕上

本文关键字:屏幕 窗体 移动 | 更新日期: 2023-09-27 18:17:00

我正试图找出如何移动指定的System.Windows.Forms.Form到另一个主屏幕。我有一个ComboBox可用的屏幕列表,用户选择他喜欢的屏幕,我的应用程序应该移动它的一个窗口到该屏幕。

我的笔记本电脑只有一个屏幕,没有外部显示器,所以我电脑上的ComboBox只有一个选择。我认为最小化想要的窗口,移动它的左角在选定的屏幕边界的中心和最大化会做的工作,对吗?我只是无法测试它。这是个好办法吗?

提前感谢!

将窗体移动到指定的屏幕上

我做了一个简单的测试…

我添加了一个简单的包装器类,这样我就可以更改ToString调用上发生的事情(我只想看到组合框中列出的名称)

private class ScreenObj
{
    public Screen screen = null;
    public ScreenObj(Screen scr)
    {
        screen = scr;
    }
    public override string ToString()
    {
        return screen.DeviceName;
    }
}

在form load事件中,我添加了这个:

foreach(Screen screen in Screen.AllScreens)
{
     cboScreens.Items.Add(new ScreenObj(screen));
}

对于组合框的选定索引更改事件,我输入:

private void cboScreens_SelectedIndexChanged(object sender, EventArgs e)
{
    object o = cboScreens.SelectedItem;
    if(null == o)
        return;
    ScreenObj scrObj = o as ScreenObj;
    if(null == scrObj)
        return;
    Point p = new Point();
    p.X = scrObj.screen.WorkingArea.Left;
    p.Y = scrObj.screen.WorkingArea.Top;
    this.Location = p;
}

它将窗体移动到每个屏幕的左上角。