2016-10-19 18 views
0

私はカスタムチェックボックスの魔法使いは、メインの長方形のサイズ変更を許可しています。しかし、私はそれを無効に設定したいとき、通常のチェックボックスコントロールのようにグレーアウトしません。ちょうど白いままです。ここでカスタムチェックボックス - 無効な状態の色

がリサイズできるようにするカスタムチェックボックスのためのクラスです。ここ

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 

私は前景色プロパティを設定しようとしましたが、noに利用可能。

カスタムコントロールを無効モードでグレー表示にするにはどうすればよいですか?

答えて

1

コードで、コントロールが無効かどうかに基づいてペイントする方法を指定するものはありませんので、変更されません。 InactiveButtonStateのいずれかの値であるため、コントロールが無効のときの値を指定する必要があります。

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) 
関連する問題