Enabled=Falseにした時、文字色を変更させない
Enabled=Falseにした時、文字色が薄いグレーになってしまうが黒のまま変更させない。
<方法1>
EnabledプロパティをShadowsを使用し動作を置き換える。
<デメリット>
ComboBoxではReadOnlyプロパティが存在しないので実装できない。
EnabledChangedイベントが発生しなくなる。
例)Enabled=Falseの時、ReadOnly=True、TabStop=Falseにし背景色を変更する。
Private _Enabled As Boolean = True
Shadows Property Enabled() As Boolean
Get
Return _Enabled
End Get
Set(ByVal value As Boolean)
If value <> _Enabled Then
If value = False Then
Me.ReadOnly = True
Me.TabStop = False
Me.BackColor = SystemColors.Control
Else
Me.ReadOnly = False
Me.TabStop = True
Me.BackColor = Color.White
End If
_Enabled = value
End If
End Set
End Property
<方法2>
Enabledのメッセージをフックし色を変更させる。
<デメリット>
ソースは短いが、内容をぱっと見て理解するのが難しい。
例)Enabled=Falseの時、フォントカラーを変更させる
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Const WMEnabled As Integer = &HA
If m.Msg = WMEnabled Then
Me.ForeColor = Color.Black
Return
End If
MyBase.WndProc(m)
End Sub
.
最終更新:2008年07月17日 13:48