我在c#中有一个winforms应用程序,约有10个表格可以通过。
在所有这些上,我都将startposition设置为 Centerscreen ,但是我使用的是带有第二个屏幕的笔记本电脑。
现在,应用程序在我的一个屏幕上随机启动。同样,即使该应用在一个屏幕上,也会在第二个屏幕上弹出消息框。我如何设置应用程序始终从主屏幕开始,将其设置为Windows中的" 1"。
我还想将应用程序绑定到它在屏幕上显示的屏幕,以便与应用程序在同一屏幕上显示消息框。我想拥有的另一件事是,新表格将显示与以前的表格相同的位置,而不是返回应用程序启动的屏幕。
我应该用什么来控制表格的位置?
我尝试将启动位置更改为 CenterParent ,但这似乎并没有改变任何东西。
在启动页面(第一格式(上尝试一下:
private void MyForm_Load(object sender, EventArgs e)
{
this.Location = Screen.AllScreens[0].WorkingArea.Location;
this.StartPosition = FormStartPosition.CenterScreen;
}
更多信息在这里:在辅助显示器上显示窗口表格?
这个问题是关于在辅助屏幕上显示程序。如果您使用的答案,只需将1 index
更改为阵列上的0
即可。
编辑:
只是为了强调 Bryce Wagner 对其他人的评论阅读此问题:
如果您是从表单或用户控件调用它,则需要调用MessageBox.Show(此,"消息"(。
在此处和类似问题中结合所有答案,在主屏幕上显示应用的工作解决方案是:
private void FormLogin_Load(object sender, EventArgs e)
{
this.Location = Screen.AllScreens[0].WorkingArea.Location;
ReallyCenterToScreen();
}
protected void ReallyCenterToScreen()
{
Screen screen = Screen.FromControl(this);
Rectangle workingArea = screen.WorkingArea;
this.Location = new Point()
{
X = Math.Max(workingArea.X, workingArea.X + (workingArea.Width - this.Width) / 2),
Y = Math.Max(workingArea.Y, workingArea.Y + (workingArea.Height - this.Height) / 2)
};
}
并将消息框保存在中心屏幕上是:
MessageBox.Show(this, "Message")
来源是@Bryce Wagner的评论,我的问题,@mohamad Shahrestani的答案以及来自 @sarsur.a
我有一个带有第二个屏幕的笔记本电脑。Windows 10在"扩展"中。模式。没有任何代码示例帮助我的对话框忽略了手动位置。
事实证明,Nvidia对驾驶员有一些有用的选择。一个人会为您决定您想要的表格或对话。如果您的代码似乎没有行为,请尝试"nView Desktop Manager" -> "Windows Manager" -> "Dialog box repositioning"
和Open windows on
设置。