2013-08-19 6 views
5

GroupBox을 넣고 Label을 넣은 다음 AutoSizeMode = GrowAndShrinkAutoSize = true을 설정합니다.GroupBox 자동 크기 조정

두 가지 문제가 발생할 것입니다 : LabelGroupBox의 하단 (거의 충분히 다른 Label에 맞게 롤) 사이에 큰 차이가

  • 있다;
  • AutoSizeGroupBox.Text 속성을 따르지 않습니다.

질문이 GroupBox.AutoSize 제대로 작동하는 방법? 적절하게 의미합니다 : 최소 너비는 GroupBox.Text에 충분해야합니다. 알 수없는 이유로 아래에 틈새가 없어야합니다 (Margin도 아니고 Padding도 아니며 꽤 못생긴 것처럼 보입니다).


나는 OnPaint에서 문자열 길이를 측정하고 거기 MinimumSize을 설정하기 위해 시도했습니다. 그것은 작동하지만 실제로 나중에 MinimumSize을 설정하려는 것처럼 이것에 대해 의구심이 있습니다 - 다시 칠한 후에 손실됩니다.

label1.Location = Point.Empty; 

당신을 :

enter image description here

+0

그것은'label1' 위치하지'포인트 (0, 0)'임을 분명히이다 : 어떤 속도로

, 당신은 다음과 같은 "주위 얻을"문제 같은 것을 할 수 있습니까? 너는 나의 해결책을 시도조차하지 않았다. –

+0

예, 시도했지만 작동하지 않습니다. 나는 대답 자체에서 이것을 말했다. 'GroupBox'가 붕괴 된 다른 스크린 샷을 게시하고 싶습니다 (왜냐하면'AutoSize'가 부모 크기를 0으로 줄이는 것을 막지 못하기 때문입니다).이 질문에 대해 지금 내가해야 할 일은 무엇입니까? 나는 마이크로 소프트에서 오는 명백한 문제를 가지고있다. 그러나 나의 질문은 잠정 상태이다. 그래서 아무도 그것에 대해 귀찮게 대답하지 않을 것이다. 다시 다시 게시 하시겠습니까? – Sinatr

답변

1

그것은 당신의 Label의 위치가 (0,0) 이외의 지점에 고정되어 간단,이 시도 :


업데이트, 여기 스크린 샷입니다 GroupBoxPadding을으로 설정해보세요. 모든(기본값은 3) :

groupBox1.Padding = new Padding(0); 
+0

작동하지 않습니다. 이것과 GroupBox.AutoSize = true를 설정하면 그룹 상자가 1 픽셀 너비 또는 그 이상으로 축소됩니다. 충분히 흥미 롭다면 접힌 그룹 상자의 ** 높이 **는 (label1에 하나 이상의'Label'을 맞추기 위해) 필요 이상으로 커질 것입니다. 어떻게이 대답은 두 번째 이슈 ('GroupBox.Text'와 함께)를 고쳐야할까요? – Sinatr

+0

@Sinatr 화면 캡처를 게시하십시오. 나는 이걸 시도해 봤고 내부의'Label' 크기에 거의 미치지 못합니다. –

+0

스크린 샷을 추가했습니다. – Sinatr

1

당신은 아래쪽 가장자리를 조금 조정 그룹 상자에서 새 클래스를 파생하여 하단에 원치 않는 노란색 공간을 제거 할 수 있습니다. 제어 AutoSize = true 경우 성장 때 GroupBox 제어 종류의 미리 정의 된 패딩을 가지고 것처럼 VB 뭔가 같은 ...

Public Class BetterGroupBox 
    Inherits GroupBox 

    Public Overrides Function GetPreferredSize(ByVal proposedSize As Size) As Size 
     Dim ns = MyBase.GetPreferredSize(proposedSize) 
     Return New Size(ns.Width, ns.Height - 15) 
    End Function 

End Class 
0

에서 보인다. 즉, GroupBox 내부의 컨트롤이 GroupBox의 아래쪽에서 20 픽셀 정도 떨어져 있으면 GroupBox가 커지기 시작합니다. 이렇게하면 가장 아래쪽 컨트롤의 맨 아래에서 GroupBox의 아래쪽까지 20 픽셀 정도의 패딩이 발생합니다 (@ Sinatr의 첨부 이미지에 노란색으로 강조 표시됨).

GroupBox의 Width을 성장시킬 때 내 견해에 따르면 패딩이 덜한 것 같습니다.

public void MyFunction() 
    { 
     groupBox1.AutoSize = true; 

     // Do stuff (e.g., add controls to GroupBox)... 

     // Once all controls have been added to the GroupBox... 
     groupBox1.AutoSize = false; 

     // Add optional padding here if desired. 
     groupBox1.Height = myBottomMostControl.Bottom; 
    }