문제

이것은 이전 질문에 대한 후속 질문입니다."글꼴에 따른 제어 위치 지정."를 해결하려는 시도다. 진짜 그 질문 뒤에 숨은 문제는 아마도 제가 질문했던 것과는 다른 방식일 것입니다.

문제 설명의 예: '가격 조정 기준'이라는 확인란을 원합니다. <X> <Y> 로드 후", 여기서 <X> 숫자입니다--- NumericUpDown---그리고 <Y> "퍼센트" 또는 "달러" 중 하나를 선택합니다. ComboBox.이것은 한 줄에 있습니다.

합병증: 이러한 모든 컨트롤의 글꼴을 변경할 수 있기를 원합니다(기본적으로 다음과 같이 설정). System.Drawing.Fonts.MessageBoxFont, 이는 Windows XP 등에서 Tahoma 8pt입니다.및 Vista의 Segoe UI 9pt), 레이아웃을 엉망으로 만들지 않고 현재의 Position-property--설정 패러다임이 작동하지 않습니다.

더 일반적으로는 컨트롤을 글꼴 독립적인 방식으로 동적으로 배치하고 싶습니다. <X> NumericUpDown "by"와 "by" 사이의 공간에 꼭 맞습니다. <Y> ComboBox, 그리고 마찬가지로 <X> ComboBox 에 관해서는 맞는다. <X> CheckBox 오른쪽에는 "after loading"이라는 문자열이 있습니다.

다들 놓치고 있는 부분: 이것은 모두 CheckBox.따라서 이상적으로 "로드 후"라는 단어를 클릭하면 확인란을 확인/선택 해제하고 "로드 후 가격 조정"주위에 작은 하이라이트 사각형을 그립니다. 그래서 그냥 추가를 때리는 것입니다 Label 결국 작동하지 않습니다. 왜냐하면 토글되지 않기 때문입니다. CheckBox;마찬가지로, 그런 것들을 연결하여 반창고를 하려고 노력하는 것 Label'에스 Click 이벤트는 원하는 하이라이트 사각형을 생성하지 않습니다.

솔루션? 이 시점에서 나는 다음 중 하나를 생각하고 있습니다.

  1. 두 줄의 별도 텍스트와 같은 추악한 솔루션을 사용하여 문제를 다시 생각해보세요."로드 후 찾은 가격 조정"(CheckBox), "조정 금액:" (NumericUpDown 그리고 ComboBox).내 옵션 상자가 이런 유형의 옵션으로 가득 차 있기 때문에 이것은 정말 좋지 않습니다(예:예의 유형), 세로 크기가 최소한 두 배 이상 됩니다.

  2. 일종의 사용자 정의 컨트롤? SplittableCheckBox?

  3. 어떤 종류의 마법을 TableLayout 제어?(확실히 이것은 "모두가 놓치고 있는 부분"에서 실패합니다.)

  4. 포기하고 MS Sans Serif로 돌아가거나 Tahoma를 균일하게 사용하거나 Segoe UI를 내 응용 프로그램과 함께 패키지하여 시스템 기본 글꼴을 무시합니다.

  5. (새로운 내용, 편집을 통해) 누군가 WPF가 이 시나리오를 정확하게 지원한다고 확신할 수 있다면 WPF로 전환하세요.

도움이 되었습니까?

해결책

이 레이아웃을 따르는 옵션이 여러 개 있다면 사용자 정의 컨트롤을 만들어 보는 것은 어떨까요?사용자 컨트롤에는 CheckBox, NumericUpDown, ComboBox 및 "로드 후" 레이블이 포함됩니다.OnFontChanged를 재정의하여 지정된 글꼴을 사용한 텍스트 렌더링을 기반으로 컨트롤의 위치를 ​​조정할 수 있습니다.CheckBox를 선택/선택 취소하려면 EventHandler를 레이블에 추가하세요.

모든 컨트롤을 초점 직사각형으로 둘러싸도록 하려면 내부 컨트롤 중 하나를 클릭할 때 사용자 컨트롤에 포커스를 줄 수 있어야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top