2011-09-27 4 views
0

.net winforms 프로그램에서 사용자가 더 큰 텍스트 크기를 선택하면 올바르게 표시되지 않는 사용자 지정 사용자 정의 컨트롤이 있습니다. 이 설정 : enter image description hereWindows 7의 컨트롤 확장 문제

내 컨트롤과 같이,

enter image description here 대신이 같은의

,

enter image description here

지역 지역 및 선박에 대한 법안은 모두 사용자 정의 컨트롤입니다 . 어떻게 내가 할 수있는

Private Sub panFaxPhone_Resize(sender As Object, e As System.EventArgs) Handles panFaxPhone.Resize 
      panFax.Width = (panFaxPhone.Width/2) - 1 
      panPhone.Width = (panFaxPhone.Width/2) - 1 
      panFax.Left = panFaxPhone.Width - panFax.Width 
    End Sub 

,이 문제에 기여하고 나도 몰라하지만 난 제어 할 수있는 법안에서이 코드처럼 잘 스트레칭 전화/팩스 영역을 확장 할 수 있도록 각 코드가 있습니까 더 큰 텍스트에 대한 사용자 선택을 존중하면서 (필자는 AutoScaleMode를 None으로 설정하고 싶지 않습니다.) 내 컨트롤을 올바르게 크기 조정 하시겠습니까?

업데이트 : 오랫동안 재생 한 후에는 하위 컨트롤의 앵커에 문제가있는 것 같습니다. 이 아래 이미지를 보자. 내부 블랙 박스는 테두리가 켜져있는 컨트롤이며, 이름과 같은 텍스트 상자는 왼쪽과 오른쪽으로 고정되어 있으며 컨트롤을 채우기 위해 늘려야하지만 그렇지 않다.

enter image description here

답변

1

그것은 그냥 일반 단지 앵커 작동하지 않습니다 스케일링 기본 컨트롤처럼 보인다. 나는 왜 그런지 모르고 그것을 설명 할 수 없다. 그러나 나는 주변에서 일을 발견했다. 컨트롤에 추가 한 아래 코드를 참조하십시오. 설명을 해줄 수 있으면 감사하겠습니다.

Private ChildControlScale As Double = 0 
    Public Sub New() 

     ' This call is required by the designer. 
     InitializeComponent() 

     ' Add any initialization after the InitializeComponent() call. 
     ChildControlScale = txtAddress.Width/Me.Width 

    End Sub 

    Protected Overrides Sub ScaleControl(factor As System.Drawing.SizeF, specified As System.Windows.Forms.BoundsSpecified) 
     MyBase.ScaleControl(factor, specified) 
     If ChildControlScale <> 0 Then 
      For Each ctrl As Control In Me.Controls 
       ctrl.Width = Me.Width * ChildControlScale 
      Next 
     End If 
    End Sub