2016-10-19 6 views
0

У меня есть пользовательский флажок, позволяющий изменять размер основного прямоугольника. Но когда я хочу установить его как отключенный, он не станет серым, как это делает обычный checkbox. Он просто остается белым.Пользовательский флажок - отключен цвет состояния

Здесь пока класс для пользовательских флажок, чтобы разрешить изменение размеров:

Public Class NewCheckBox 
Inherits CheckBox 

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) 
    MyBase.OnPaint(e) 

    'Make the box you check 3/4 the height 
    Dim boxsize As Integer = Me.Height * 0.75 
    Dim rect As New Rectangle(
     New Point(0, Me.Height/2 - boxsize/2), 
     New Size(boxsize, boxsize) 
    ) 
    ControlPaint.DrawCheckBox(e.Graphics, rect, If(Me.Checked, ButtonState.Checked, ButtonState.Normal)) 
End Sub 
End Class 

Вот как я хочу использовать его:

Private Sub txtFpo_TextChanged(sender As Object, e As EventArgs) Handles txtFpo.TextChanged 

    If functii.verificaLaser(txtFpo.Text) = True Then 
     NewCheckBox1.Enabled = False 
     'NewCheckBox1.ForeColor = Color.DarkGray 
    End If 

Я попытался установить свойство ForeColor, но нет помогло.

Как я могу сделать настраиваемый элемент управления серым цветом в отключенном режиме?

ответ

1

Я ничего не вижу в вашем коде, который указывает, как рисовать на основе того, отключен ли элемент управления или нет, поэтому, конечно, он не изменяется. Inactive является одним из значений ButtonState, поэтому вам нужно указать, что, когда элемент управления отключен.

Dim buttonState = ButtonState.Normal 

If Me.Checked Then 
    buttonState = buttonState Or ButtonState.Checked 
End If 

If Not Me.Enabled Then 
    buttonState = buttonState Or ButtonState.Inactive 
End If 

ControlPaint.DrawCheckBox(e.Graphics, rect, buttonState) 
Смежные вопросы