2016-06-13 1 views
2

그룹 폼의 왼쪽 상단에있는 그룹 상자 텍스트의 색을 Windows 양식으로 변경하고 그룹 상자 안에있는 컨트롤이나 레이블을 변경하는 옵션이 있는지 알고 싶습니다.ForeColor를 변경하지 않고 GroupBox 텍스트의 ForeColor를 어떻게 바꿀 수 있습니까?

GroupBox.ForeColor = Color.Blue은 해당 상자와 연결된 모든 텍스트가 파란색으로 바뀌는 것을 알고 있지만 GroupBox의 레이블 및 기타 컨트롤의 ForeColor도 변경합니다.

자녀의 forecolor를 변경하지 않고 그룹 상자 텍스트의 색상을 변경하려면 어떻게해야합니까?

+1

은 [이] (http://stackoverflow.com/q/9321720/4934172) 문제에 보라, 당신은 몇 가지 옵션을 찾을 수 있습니다. –

답변

4

ForeColor 속성은 주위 속성입니다. 주변 속성은 컨트롤이 설정되어 있지 않으면 부모 컨트롤 에서 검색됩니다. 당신이 그룹 상자의 레이블과 텍스트 상자에 대한 ForeColor을 설정하지 않았기 때문에

, 그들은 그들의 부모의 ForeColor 값을 사용합니다. 이러한 옵션 중 하나를 사용하여이 문제를 해결할 수 있습니다 :

  1. PanelGroupBox에서이 BlueGroupBoxForeColor을 설정하고 명시 적으로 디자이너를 사용하여 ControlTextPanelForeColor을 설정 넣습니다. 그런 다음 다른 컨트롤을 Panel에 넣으십시오. 이렇게하면 컨트롤에 ForeColor (Panel)이 명시 적으로 설정됩니다.

  2. 사용자 정의 GroupBoxPaint :

    Private Sub GroupBox1_Paint(ByVal sender As System.Object, _ 
        ByVal e As System.Windows.Forms.PaintEventArgs) Handles GroupBox1.Paint 
    
        e.Graphics.Clear(Me.GroupBox1.BackColor) 
        GroupBoxRenderer.DrawGroupBox(e.Graphics, Me.GroupBox1.ClientRectangle, _ 
         Me.GroupBox1.Text, Me.GroupBox1.Font, Color.Blue, _ 
         System.Windows.Forms.VisualStyles.GroupBoxState.Normal) 
    End Sub 
    
0

내가 아는 한 모든 하위 컨트롤은 부모 속성을 사용합니다.

GroupBox의 ForeColor를 설정 한 후에 모든 하위 색상을 저장하고 변경할 수 있습니다. Control/Color의 각 쌍과 함께 사전을 사용할 수 있습니다. 같은

뭔가 :

Dim cColors As New Dictionary(Of Control, Color) 

For Each ctrl As Control In GroupBox1.Controls 
    cColors.Add(ctrl, ctrl.ForeColor) 
Next 

GroupBox1.ForeColor = Color.Blue 

For Each ctrl As Control In GroupBox1.Controls 
    If cColors.HasKey(ctrl) Then 
     ctrl.ForeColor = cColors(ctrl) 
    End If 
Next 

당신은 방법에 그것을 넣을 수 있습니다.

MSDN에 대한 자세한 정보가 있습니다.