나는 여러 개의 TableLayoutPanels을 가지고 있는데, 각각은 정보 라벨이있는 라벨과 데이터 라벨이있는 라벨의 두 열에 이름/값 정보 카테고리를 표시합니다.TableLayoutPanels 동기화하기
각 항목에서 첫 번째 열을 자동 크기 조정으로 설정하고 모든 레이블을 오른쪽 정렬하여 올바르게 작동합니다. 첫 번째 열 모든을 자동 크기 때이 이름 라벨의 모든을 고려하는 방법을 찾고 있어요
TableLayoutPanel 1:
+--------+--------+
| Name 1 | Data 1 |
+--------+--------+
| Name 2 | Data 2 |
+--------+--------+
| Name 3 | Data 3 |
+--------+--------+
TableLayoutPanel 2:
+------------------+--------+
| Long Name 1 | Data 1 |
+------------------+--------+
| Very Long Name 2 | Data 2 |
+------------------+--------+
| Long Name 3 | Data 3 |
+------------------+--------+
그러나, 각 TableLayoutPanel (명백하게)에 개별적으로 작동하고, 다음과 같이 보입니다 그래서 그것은 다음과 같습니다
TableLayoutPanel 1:
+------------------+--------+
| Name 1 | Data 1 |
+------------------+--------+
| Name 2 | Data 2 |
+------------------+--------+
| Name 3 | Data 3 |
+------------------+--------+
TableLayoutPanel 2:
+------------------+--------+
| Long Name 1 | Data 1 |
+------------------+--------+
| Very Long Name 2 | Data 2 |
+------------------+--------+
| Long Name 3 | Data 3 |
+------------------+--------+
각 테이블 정보의 다른 카테고리를 나타내는 등 (접을 수있는 패널의 컬렉션 사용자 지정 컨트롤 내부에 있기 때문에 나는, 하나 개의 테이블에 모든 데이터를 넣을 수 없습니다 별도로 각 카테고리를 표시하거나 숨길 수 있습니다.
컨테이너 컨트롤 인 OnLayout()을 재정 의하여이 작업을 완료하려고했습니다. TableLayoutPanels의 모든 첫 번째 열을 자동 크기 조정으로 설정하고 너비를 모두 가져 와서 최대 값을 찾은 다음 첫 번째 열 모두를 설정합니다. 가장 큰 너비의 고정 된 크기로. 이것은 작동하지만 모든 열이 자동 크기 조정으로 이동 한 다음 고정 크기로 돌아갈 때 레이아웃이 발생할 때마다 끔찍한 것처럼 보입니다.
각 테이블에 대해 ControlAdded 및 ControlRemoved를 연결 한 다음 각 자식 컨트롤에 대해 SizeChanged를 사용하여 자식 컨트롤의 크기가 변경된 시점을 알 고 수동으로 열 너비를 설정해야한다고 가정합니다. ,하지만 나는 정확한 너비를 안정적으로 얻는 방법을 모르겠습니다.
첫 번째 메서드의 변형 - 첫 번째 열의 모든 컨트롤에서 GetPreferredSize()를 사용하여 가장 큰 너비를 찾고 모든 첫 번째 열을 고정 된 크기로 설정하려고 시도했지만 반환하는 것처럼 보였습니다. 너비가 약간 작았습니다. 몇 가지 추가 간격을 적용해야합니까?
TableLayoutPanel에 시각적으로 실제로 적용하지 않고 자동 크기 조정 계산을 수행하도록 요청하는 방법을 아는 사람이 있습니까? 아니면 테이블에 누워서 특정 폭의 통제가 있다는 것을 '가장 할'수 있습니다. 단지 그것을 고려합니다. 실제 컨트롤을 추가 할 수 없기 때문에 더 많은 셀을 할당하려고합니다. 나는 ILSpy로 소스를 보았지만, 꽤 좋지는 않습니다. 대부분의 작업이 TableLayout 클래스에 의해 수행되는 것처럼 보입니다. 내부 클래스는 물론 내부적으로 수행 할 수 없습니다. 어떤 아이디어에 대한
감사합니다 ...
그들은 아스키 테이블에서 잘 작동합니다 ... – Daryl
너무 나쁘면 WPF를 사용할 수 없습니다. 이것은 WPF에서 사소한 일입니다. –
글자와 글자를 기준으로 텍스트의 길이를 결정할 수 있습니다. 가장 긴 텍스트를 찾으려면 모든 텍스트에서이 작업을 수행 한 다음 모든 레이아웃 패널의 첫 번째 열 너비를 수동으로 설정할 수 있습니까? – Daryl