How to show a form on current screen in C#?

柔情痞子 提交于 2019-12-07 13:15:46

问题


I want to show a new form in the same window from where it was invoked. I know a way to show this form on PrimaryScreen or Virtual Screen by code similar to as below:

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

But i want to show it on current screen. Is there a way to find out and show it on current screen?


回答1:


I have done something like this to show my form centered to the current screen:

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;



回答2:


You can use the same technique, but instead of using the PrimaryScreen, grab the screen using Screen.FromPoint and Cursor.Position:

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



回答3:


It sounds like you aren't setting the StartPosition to Manual.




回答4:


  1. Click on the Form in design mode.
  2. Change the StartPosition property to CenterScreen .

This should open up the form on the active screen. Refer this for more values of StartPosition.




回答5:


If you already have a parent form and want to open a new form on the same screen, give the ShowDialog method a reference to the parent form: newForm.ShowDialog(this); Without owner parameter ("this") the new form may open on the main screen even when your parent form is on another screen.




回答6:


I know this is late, but still, post my answer hope that it will help someone else. After several tries, I got this work with 3 monitors

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();
        }


来源:https://stackoverflow.com/questions/3073852/how-to-show-a-form-on-current-screen-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!