为了账号安全,请及时绑定邮箱和手机立即绑定

在辅助监视器上显示Windows窗体?

在辅助监视器上显示Windows窗体?

C#
慕容3067478 2019-11-15 12:32:11
我正在尝试在辅助监视器上设置Windows窗体,如下所示:private void button1_Click(object sender, EventArgs e){    MatrixView n = new MatrixView();    Screen[] screens = Screen.AllScreens;    setFormLocation(n, screens[1]);    n.Show();}private void setFormLocation(Form form, Screen screen){    // first method    Rectangle bounds = screen.Bounds;    form.SetBounds(bounds.X, bounds.Y, bounds.Width, bounds.Height);    // second method    //Point location = screen.Bounds.Location;    //Size size = screen.Bounds.Size;    //form.Left = location.X;    //form.Top = location.Y;    //form.Width = size.Width;    //form.Height = size.Height;}边界的属性似乎是正确的,但是在我尝试过的两种方法中,这都会最大化主监视器上的形式。有任何想法吗?
查看完整描述

4 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

尝试在SetFormLocation方法中将WindowStartUpLocation参数设置为“ manual”。


查看完整回答
反对 回复 2019-11-15
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

this.Location = Screen.AllScreens[1].WorkingArea.Location;

这是表单参考。


查看完整回答
反对 回复 2019-11-15
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

效果很好。如果窗口最大化,则不会移动窗口。此代码段解决了这一问题(尽管我怀疑窗口的“正常”尺寸必须小于新的屏幕尺寸才能正常工作):


    void showOnScreen(int screenNumber)

    {

        Screen[] screens = Screen.AllScreens;


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

        {

            bool maximised = false;

            if (WindowState == FormWindowState.Maximized)

            {

                WindowState = FormWindowState.Normal;

                maximised = true;

            }

            Location = screens[screenNumber].WorkingArea.Location;

            if (maximised)

            {

                WindowState = FormWindowState.Maximized;

            }

        }

    }


查看完整回答
反对 回复 2019-11-15
  • 4 回答
  • 0 关注
  • 350 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信