最近碰到一个开发项目,该项目需要两块显示器(如下图所示),主屏幕用于显示网页,分屏幕用于显示客户端界面。该项目用到的客户端是用C# winform编写的。抛开客户端处理的业务逻辑不谈,主要谈谈在winform中如何让界面出现在第二块屏幕的中间。
Screen类
C#提供的Screen类可以解决界面位置问题:
-获取所有的屏幕对象:Screen sc[] = Screen.AllScreens;
-获取当前屏幕的名称:string CurrentScreenName = Screen.FromControl(this).DeviceName;
-获取当前屏幕对象:Screen CurrentScreen = Screen.FromControl(this);
如果只需要界面出现在左边屏幕正中间(如下图所示),那代码只需要这样写就行:
this.StartPosition = FormStartPosition.CenterScreen;
但是如果需求是界面出现在右边屏幕的正中间(如下图所示)就必须按照下面的代码,重写Onshown方法或者添加代码至OnLoad事件。
protected override void OnShown(EventArgs e)
{
Screen[] sc= Screen.AllScreens;
if (sc.Count() == 2)
{
//我的显示器sc[0]是第二块屏幕,
this.Left = sc[0].Bounds.Left + (sc[1].Bounds.Width - this.Width) / 2;
this.Top = (sc[0].Bounds.Height - this.Height) / 2;
}
base.OnShown(e);
}