2
듀얼 모니터가 있고 화면 중앙에 Windows 폼을 표시하려고합니다. (변수 MonitorId = 0 또는 1).화면 중앙에 WindowsForm 표시 (듀얼 스크린)
내가 가진 :
System.Windows.Forms.Screen[] allScreens=System.Windows.Forms.Screen.AllScreens;
System.Windows.Forms.Screen myScreen = allScreens[0];
int screenId = RegistryManager.ScreenId;
// DualScreen management
if (screenId > 0)
{
// has 2nd screen
if (allScreens.Length == 2)
{
if (screenId == 1)
myScreen = allScreens[0];
else
myScreen = allScreens[1];
}
}
this.Location = new System.Drawing.Point(myScreen.Bounds.Left, 0);
this.StartPosition = FormStartPosition.CenterScreen;
그러나이 코드는 때마다 작동하지 않는 것 ... 그것은 형태를 메인 화면 만에 모든 시간을 표시합니다. 왼쪽 상단 모서리가 스크린의에없는 경우
foreach(var screen in Screen.AllScreens)
{
if (screen.WorkingArea.Contains(this.Location))
{
var middle = (screen.WorkingArea.Bottom + screen.WorkingArea.Top)/2;
Location = new System.Drawing.Point(Location.X, middle - Height/2);
break;
}
}
주이 작동하지 않습니다, 그래서 중심에서 최소 거리와 화면을 찾기 위해 더 좋을 수 있습니다
내가의 양식을 표시 할 필요가없는 :
편집
당신이 주어진 화면에 표시 할 경우
this.StartPosition = FormStartPosition.Manual;
이 코드를 사용해보십시오 설정해야합니다 실제로 ('if (screen.WorkingArea.Contains (this.Location))') 그러나'screeenID'에 의존하는 동일한 화면 – serhio
이것을 반영하기위한 편집 된 대답 ... –