将表单移动到指定的屏幕

Aar*_*ite 8 .net c# window screen winforms

我试图弄清楚如何将指定的System.Windows.Forms.Form移动到另一个主屏幕上.我有可用屏幕列表的ComboBox,用户可以选择他喜欢的任何一个屏幕,我的应用程序应该将其中一个窗口移动到该屏幕上.

我的笔记本电脑上只有一个屏幕,没有外接显示器,所以我电脑上的ComboBox只提供一个选项.我认为最小化所需的窗口,将其左侧角移动到所选屏幕的边界并且最大化将完成工作,对吧?我只是无法测试它.这是一个好方法吗?

提前致谢!

pen*_*ave 8

这是我做的,作为一个简单的测试......

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

private class ScreenObj
{
    public Screen screen = null;

    public ScreenObj(Screen scr)
    {
        screen = scr;
    }

    public override string ToString()
    {
        return screen.DeviceName;
    }
}
Run Code Online (Sandbox Code Playgroud)

在表单加载事件中我添加了这个:

foreach(Screen screen in Screen.AllScreens)
{
     cboScreens.Items.Add(new ScreenObj(screen));
}
Run Code Online (Sandbox Code Playgroud)

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

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;
}
Run Code Online (Sandbox Code Playgroud)

它将表单移动到我的每个屏幕的左上角.