【问题标题】:How to show a form on current screen in C#?如何在 C# 中在当前屏幕上显示表单?
【发布时间】:2011-03-05 16:04:13
【问题描述】:

我想在调用它的同一个窗口中显示一个新表单。 我知道一种通过类似于以下代码在 PrimaryScreen 或 Virtual Screen 上显示此表单的方法:

MyForm.Location = Screen.PrimaryScreen.Bounds.Location;

但我想在当前屏幕上显示它。 有没有办法找出并在当前屏幕上显示它?

【问题讨论】:

  • 这是您的应用程序的主要形式,还是会有所有者?
  • 您是否尝试用新表单替换显示的表单?好像你在做一个巫师?

标签: c# winforms forms windows-forms-designer


【解决方案1】:

我知道这已经晚了,但仍然发布我的答案,希望它可以帮助其他人。经过几次尝试,我用 3 台显示器完成了这项工作

var currentScreen = Screen.FromControl(this);
        if (!currentScreen.Primary)
        {
            var hCenter = currentScreen.Bounds.Left + (((currentScreen.Bounds.Right - currentScreen.Bounds.Left) / 2) - ((Width) / 2));

            var vCenter = (currentScreen.Bounds.Bottom / 2) - ((Height) / 2);
            StartPosition = FormStartPosition.Manual;
            Location = new Point(hCenter, vCenter);
        }
        else
        {
            CenterToScreen();
        }

【讨论】:

    【解决方案2】:

    我做了这样的事情来显示我的表单以当前屏幕为中心:

    var screen = Screen.FromPoint(Cursor.Position);
    myForm.StartPosition = FormStartPosition.Manual;
    myForm.Left = screen.Bounds.Left + screen.Bounds.Width / 2 - myForm.Width / 2;
    myForm.Top = screen.Bounds.Top + screen.Bounds.Height / 2 - myForm.Height / 2;
    

    【讨论】:

      【解决方案3】:
      1. 在设计模式下单击表单。
      2. 将 StartPosition 属性更改为 CenterScreen 。

      这应该会在活动屏幕上打开表单。参考 this 获取更多 StartPosition 值。

      【讨论】:

        【解决方案4】:

        如果您已经有一个父窗体并想在同一屏幕上打开一个新窗体,请给 ShowDialog 方法一个对父窗体的引用:newForm.ShowDialog(this); 如果没有所有者参数 ("this"),新窗体可能即使您的父窗体在另一个屏幕上,也会在主屏幕上打开。

        【讨论】:

          【解决方案5】:

          听起来您没有将 StartPosition 设置为 Manual。

          【讨论】:

            【解决方案6】:

            您可以使用相同的技术,但不要使用 PrimaryScreen,而是使用 Screen.FromPointCursor.Position 抓取屏幕:

            Screen screen = Screen.FromPoint(Cursor.Position);
            MyForm.Location = screen.Bounds.Location;
            

            【讨论】:

            • 我试过这个。但新表单仍显示在主屏幕上,并且表单大小变得更短。我试图显示光标所在的屏幕是否是主屏幕,我得到了正确的答案。但是当我分配位置时,它没有被正确分配。
            猜你喜欢
            • 2020-03-10
            • 2012-07-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-17
            • 1970-01-01
            • 2020-02-09
            相关资源
            最近更新 更多