C# 在运行时更改窗体位置更改屏幕编号

C# 在运行时更改窗体位置更改屏幕编号,c#,C#,在从主屏幕切换到次屏幕后,我尝试将窗体位置切换到中间位置 private void Form2_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Space) { ff = !ff; if(ff) showOnScreen(1,this); else

在从主屏幕切换到次屏幕后,我尝试将窗体位置切换到中间位置

private void Form2_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Space)
        {

             ff = !ff;
             if(ff)
                 showOnScreen(1,this);
             else
                 showOnScreen(0,this); 
        }
    }



void showOnScreen(int screenNumber,Form frm)
    {
        Screen[] screens = Screen.AllScreens;

        if (screenNumber >= 0 && screenNumber < screens.Length)
        {

            Location = screens[screenNumber].WorkingArea.Location;
            this.Location = new Point((screens[screenNumber].Bounds.Size.Width / 2) - (this.Size.Width / 2), (screens[screenNumber].Bounds.Size.Height / 2) - (this.Size.Height / 2));


        }
    }
private void Form2\u KeyDown(对象发送方,KeyEventArgs e)
{
if(e.KeyCode==Keys.Space)
{
ff=!ff;
如果(ff)
屏幕上显示(1,本);
其他的
屏幕上显示(0,此);
}
}
无效屏幕显示(整数屏幕编号,表格frm)
{
Screen[]screens=Screen.AllScreens;
如果(屏幕编号>=0&&screenNumber

表单在屏幕中央移动,但仅在我的主屏幕中移动

您需要设置表单的
开始位置
手册以在
位置
属性中设置开始位置值

private void Form2_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Space)
        {

             ff = !ff;
             if(ff)
                 showOnScreen(1,this);
             else
                 showOnScreen(0,this); 
        }
    }



void showOnScreen(int screenNumber,Form frm)
    {
        Screen[] screens = Screen.AllScreens;

        if (screenNumber >= 0 && screenNumber < screens.Length)
        {

            Location = screens[screenNumber].WorkingArea.Location;
            this.Location = new Point((screens[screenNumber].Bounds.Size.Width / 2) - (this.Size.Width / 2), (screens[screenNumber].Bounds.Size.Height / 2) - (this.Size.Height / 2));


        }
    }
public Form1()
{
    InitializeComponent();
    this.StartPosition = FormStartPosition.Manual;
    this.Location = new Point(0, 0);
}
从这里取一个,再检查我的另一个

现在
尝试在showOnScreen方法中将WindowsStartupLocation参数设置为“手动”。

如果表单已在屏幕上,则必须自己测量并更改Location属性。将屏幕位置添加到其中,我的意思是,您应该编辑您的答案,以包含指向ReallyCenterToScreen功能来源的链接。抱歉,问题已更改请让我现在检查