양식을 화면의 왼쪽 상단에 배치하려고합니다.양식 위치 및 크기 동작
나는 윈도우가 (7,0)에 위치했지만 화면 상단에 있지만 왼쪽은 화면 가장자리에서 7 픽셀이다. 내가 테스트를 위해 새로운 윈폼 응용 프로그램을 만들어 만이 코드를 추가 :
private void Form1_Load(object sender, EventArgs e)
{
Point p = new Point(0, 0);
WindowState = FormWindowState.Maximized;
Debug.WriteLine("\nMaximized");
Debug.WriteLine("Location: " + Location);
Debug.WriteLine("Size: " + Size);
Debug.WriteLine("PointToScreen(0,0): " + PointToScreen(p));
WindowState = FormWindowState.Normal;
Location = p;
Debug.WriteLine("\nNormal");
Debug.WriteLine("Location: " + Location);
Debug.WriteLine("Size: " + Size);
Debug.WriteLine("PointToScreen(0,0): " + PointToScreen(p));
Debug.Write("\nScreen.PrimaryScreen.WorkingArea: ");
Debug.WriteLine(Screen.PrimaryScreen.WorkingArea);
}
출력은 다음과 같습니다
Maximized
Location: {X=-8,Y=-8}
Size: {Width=1936, Height=1056}
PointToScreen(0,0): {X=0,Y=23}
Normal
Location: {X=0,Y=0}
Size: {Width=300, Height=300}
PointToScreen(0,0): {X=8,Y=31}
Screen.PrimaryScreen.WorkingArea: {X=0,Y=0,Width=1920,Height=1040}
왜 Location = new Point(0,0)
(0,0)에서 양식을 배치하지 않습니다? 내 시스템에 문제가 있습니까? Win10 및 VS2015 있습니다. 작업 표시 줄이 아래쪽에 있으며, 내 바탕 화면의 왼쪽에는 아무 것도 없습니다. (0,0)에 배치하려면 실제로 (-7,0)에 배치해야합니다. 또한 최대화 된 형태의보고 된 너비는 화면 너비보다 16 픽셀 더 큽니다. 윈도우 가장자리, 제목 표시 줄 등으로 인해 클라이언트 영역 크기와 양식 크기간에 차이가 있음을 이해합니다. 그러나 이것이 아닙니다. 양식이 최대화되면 왼쪽 및 오른쪽 가장자리 (클라이언트 영역 너비 = 바탕 화면 너비)는 없지만 양식 너비는 + 16px입니다. 폼의 4면 각각에 + 8px가 있지만 Y 위치는 OK입니다. Y 위치가 정상이고 X가 아닌 이유는 무엇입니까?
위치를 '0,0'으로 설정하고'Debug.WriteLine'은 '위치 : {X = 0, Y = 0}'을 표시합니다. 문제가 뭐니? 또한 'PointToScreen (0,0) : {X = 8, Y = 31}'은 OK입니다. 이는 양식의 클라이언트 영역의 점 '0,0'의 화면 좌표입니다. –
필자는 이전에 Win10 또는 8.1에서이 포지셔닝 문제를 발견하지 못했습니다. 추측해야한다면, 더 이상 비활성화 할 수없는 데스크톱 창 관리자 구성의 결과로 관찰 된 문제라고 말할 수 있습니다. 조사 할 새로운 것. 감사. :) – TnTinMn
문제는, 내가 쓴 것처럼, 실제로 (즉, 볼 수있는) 윈도우의 위치는 오른쪽으로 7 픽셀입니다. 클라이언트 좌표 (8,31) - 윈도우 위치가 7이고 윈도우 가장자리가 1 픽셀이고 제목 막대 때문에 Y가 31이기 때문에 X는 8입니다. 그래서 위치를 (-7,0)으로 설정하면 창이 코너에 있습니다. 따라서 클라이언트 좌표는 OK입니다. 클라이언트 사각형 _really_는 (8,31)에서 시작합니다. 양식 좌표가 올바르지 않습니다. 서식 위치는 _really_ (7,0)이며 (0,0)은 아닙니다. – c4551u5