사용자가 내 프로그램 창 (Winforms)의 위치를 조정하고 크기를 조정하면 프로그램을 닫았다가 다시 연 후에도 동일한 위치에서 창을 볼 수 있기를 기대합니다. 내가하는 일은 폼의 Width, Height, Location.X 및 Location.Y 속성을 저장하고 프로그램이 다시 열릴 때 다시 설정하는 것입니다.
문제는 창이 최대화 될 때 너비, 높이, X, Y가 최대화되지 않은 너비 / 높이 / X / Y가 아니라 최대화 된 치수를 참조하는 것입니다.
따라서 사용자가 창을 최대화하고 프로그램을 닫았다가 다시 열고 원래 위치 / 크기로 돌아가는 대신 창 최대화를 해제하면 전체 크기 / 위치에 고정됩니다.
따라서 특정 이벤트가 실행 된 후 kludge를 사용하여 변수를 저장하지 않고 창이 최대화 될 때 어떻게 최대화되지 않은 위치와 크기를 얻을 수 있습니까?
이 문제를 해결하는 가장 좋은 방법은 RestoreBounds 구조를 사용하는 것입니다. 창이 최대화되면 RestoreBounds는 이전 (최대화되지 않은) 크기 및 위치를 참조합니다. 다음은 이러한 값을 찾는 코드입니다. 닫을 때이 값을 저장 한 다음 프로그램을 다시 열면 양식의 너비, 높이, 위치 .X 및 위치 .Y를 이러한 저장된 값으로 다시 설정할 수 있습니다.
bool b = WindowState == FormWindowState.Maximized;
int xpos = !b? Location.X : RestoreBounds.X;
int ypos = !b? Location.Y : RestoreBounds.Y;
int width = !b? Width : RestoreBounds.Width;
int height = !b? Height : RestoreBounds.Height;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다