2021/11/30(Tue) 14:03:02 編集(投稿者)
■No98547 (MK さん) に返信
> 開発環境は、Visual Basic2010です。
何をってのは、アプリケーションの種類ってことです。(Windows Forms アプリケーションとかコンソールアプリケーションとか)
書き込まれてない場合は、たいてい Windows Forms なのでそれを前提に回答します。
>Me.Enabled=Falseの場合
>ラベルの文字色が薄い黒になって隠れてしまいます
>ラベルの文字色が変わらないようにするには、どのようにすればいいのでしょうか?
ラベルだけでいいんですかね?
ラベルは FlatStyle を System に変更しない限り、オーナードローされているので、
「Label.OnPaint」
https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Label.cs,ef7ee76a7f41a862
を参考にしてオーナードローすれば色合いは自由自在です。
面倒くさい場合は、Form に以下のようなプロパティを作って
'------------- ここから
<DllImport("user32.dll")>
Private Shared Function IsWindowEnabled(ByVal hWnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
<DllImport("user32.dll")>
Private Shared Function EnableWindow(ByVal hWnd As IntPtr, ByVal bEnable As Boolean) As Boolean
End Function
Public Property NativeEnabled As Boolean
Get
Return IsWindowEnabled(Me.Handle)
End Get
Set(value As Boolean)
EnableWindow(Me.Handle, value)
End Set
End Property
'------------- ここまで
Me.Enabled = False
のかわりに、
Me.ActiveControl = Nothing
Me.NativeEnabled = False
とすれば、ラベルの色は変わりません。
ただし、他のコントロールも色が変わりません。
もどすときは
Me.NativeEnabled = True
とします。