2016-08-27 2 views
0

Dock 속성이있는 UserControl을 채우기로 설정합니다. UserControl에 도킹 (채우기)되고 AutoScroll 속성이 True로 설정된 FlowLayoutPanel이 있습니다.Form을 최대화 할 때 FlowLayoutPanel의 빈 공간

FlowLayoutPanel에는 5 개의 그룹 상자가 있으며 각 상자에는 자체 크기가 있습니다. 양식 (또는 UserControl)이 정상 크기 (716x520)이면 Groupbox는 위에서 아래로 모두 좋은 결과를 얻습니다.

그러나 양식을 최대화하거나 더 크게 만들면 그룹 상자가 다시 배열되고 2 개의 첫 번째 그룹 상자 뒤에 이상한 공간이 나타납니다. 마치 행이 있고 같은 행의 다른 그룹 상자가 더 크면 높이 차이를 완성하는 공백이 나타납니다. Normal size of the UserControl When the UserControl is maximized

+0

양식을 최대화하면 패널도 커집니다. 따라서 FLP는 레이아웃을 다시 계산합니다. 그것은 악명 높은 빈 포장 문제를 해결하려고하지 않습니다. 그것은 NP 어려운 문제입니다. 그것은 눈 깜박임보다 짧은 시간에 끝내야합니다. 기능이 아니라 버그. –

+0

그래서 해결책이 있습니까 아니면 그냥 받아 들여야합니까? – Haytam

답변

0

은 분명히 당신이 FlowDirection 대신 TopDown에 대한 LeftToRight을 지정

여기에 더 나은 설명하는 몇 가지 이미지입니다. 따라서 레이아웃 패널이 충분히 넓 으면 첫 번째 행에 다른 그룹 상자를위한 공간이 생깁니다 ...

이 레이아웃은 가능한 한 많은 단어가 첫 줄에 표시되는 텍스트의 줄 바꿈과 비슷합니다 사용 가능한 너비에 따라 다릅니다.

방향을 변경하면 높이가 충분할 경우 단일 열이 생깁니다.

그 밖의 가능한 해결책이 있습니다. 그룹 상자가 모두 고정 크기라고 가정하면 흐름 레이아웃 패널 도킹을 None으로 설정하여 패널이 사용 가능한 너비로 크기가 조정되지 않도록 할 수 있습니다. 그런 다음 해당 패널에 적절한 크기를 지정하여 여러 열을 가질 수 없습니다.

또 다른 가능성은 테이블을 기반으로 레이아웃을 사용하는 것입니다. 모든 그룹 상자가 동일한 폭을 감안할 때,이 필요하지 않습니다 (작동 할 때 플로우 레이아웃을 사용하는 것이 조금 더 간단하다).

그러나 실제로는 충분한 공간이 있고 스크롤 막대를 사용하지 않는 경우 모든 그룹 상자를 화면에 표시하는 것을 선호 할 수 있습니다.이 작업은 흐름 레이아웃을 사용하여 수행 할 수 있으며, 경우에 따라 TopDown 흐름, 상단 도킹, 레이아웃 패널 자동 크기 조정 (자동 스크롤 설정 사용자 정의 컨트롤에서).

+0

글쎄, 방금 몇 가지 테스트를했다. 'TopDown' 레이아웃을 원할 경우, 레이아웃 패널을 왼쪽으로 도킹해야하지만 모든 그룹 상자가 맞지 않을 경우 가로 스크롤 막대가 생깁니다. 그렇지 않으면'LeftToRight'와'Top' 도킹은 처음에는 똑같은 문제를 일으킬 것입니다. 따라서'AutoSize'와'FlowDirection'은 관련이 있으며 사용자 정의 코드없이 원하는 것을 정확히 얻을 수 없습니다. – Phil1970

+0

TopDown FlowDirection을 시도했지만 양식이 최대화되고 UserControl (및 The FLP)의 크기가 증가하여 같은 줄에 2 개의 그룹 상자가있을만큼 늘어 났을 때 줄당 하나의 그룹 상자 만 표시되며 모든 줄이 내려갑니다. 716x520 크기 일 때 상단에서 하단까지를 표시 할 수있는 방법이 있나요?하지만 충분히 크면 한 줄에 두 개의 그룹 상자를 표시 할 수 있습니다. – Haytam

+0

레이아웃이 'TopDown'인 경우 컨테이너의 높이가 고정되고 너비가 조정됩니다. 첫 번째 열이 위쪽에서부터 채워지기 때문에 어떤 차이도 없을 것입니다. 그러나 두 번째 차원은 X입니다. 그러나 여유 ​​공간이 충분하지 않으면 스크롤 막대가 수평이됩니다.먼저 줄을 채우려면 모든 그룹 상자의 높이가 같아야합니다. 그룹 상자의 캡션으로 숫자를 입력하면 핫 플로우 레이아웃 작업을 쉽게 파악할 수 있습니다. 옵션을 시도한 후에 내가 원하는 것을 얻을 수 없다면, 유일한 해결책은 자신 만의 레이아웃을 만드는 것입니다. – Phil1970