
こんにちは。
VB.netを用いて簡単なプログラムを作っています。
メニュー画面を作っており、ボタンをFlatにして背景色は白にしています。
ログインするユーザーによって使うボタンを変更したいのですが、
Flatの特性なのか、Enable=falseであることがわかりにくいなと思い
ボタンの背景色をグレー等にできたらいいなと考えています。
プロパティなども確認しましたが、方法が分からず困っています。
もしご存知の方がいたらご教授願えませんでしょうか。
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
Enabled = False となるタイミングで、BackColor を希望する色に変更してください。
もちろん、その逆もしかりです。
もしくは例えば下記のようなコードで、Enabledの状態に応じて色を勝手に変更してくれる専用のボタンを用意するかですね。
Imports System.ComponentModel
Public Class ButtonEx
Inherits Button
Private _enabledColor As Color = Color.Empty
''' <summary>
''' Enabled が False の時のコントロールのの背景色を取得または設定します。
''' </summary>
''' <returns>背景色を表す Color 値。</returns>
<Browsable(True)>
<Category("自作 表示")>
<Description("Enabled が False の時のコンポーネントの背景色です。")>
Public Property DisableBackColor As Color
''' <summary>
''' DisableBackColor が変更されたかどうか。
''' </summary>
''' <returns></returns>
Private Function ShouldSerializeDisableBackColor() As Boolean
If DisableBackColor = Color.Empty Then
Return False
End If
Return True
End Function
''' <summary>
''' DisableBackColor を既定値に戻す。
''' </summary>
Private Sub ResetDisableBackColor()
DisableBackColor = Color.Empty
End Sub
''' <summary>
''' コントロールの背景色を取得または設定します。
''' </summary>
''' <returns>背景色を表す Color 値。</returns>
Public Overloads Property BackColor As Color
Get
Return MyBase.BackColor
End Get
Set(value As Color)
If Enabled OrElse Not ShouldSerializeDisableBackColor() Then
MyBase.BackColor = value
End If
_enabledColor = value
End Set
End Property
''' <summary>
''' コントロールがユーザーとの対話に応答できるかどうかを示す値を取得または設定します。
''' </summary>
''' <returns>コントロールがユーザーとの対話に応答できる場合は true。それ以外の場合は false。既定値は、true です。</returns>
Public Overloads Property Enabled As Boolean
Get
Return MyBase.Enabled
End Get
Set(value As Boolean)
MyBase.Enabled = value
If value Then
MyBase.BackColor = _enabledColor
Return
End If
If ShouldSerializeDisableBackColor() Then
MyBase.BackColor = DisableBackColor
End If
End Set
End Property
End Class
naktak様
ご回答いただきありがとうございます。
やはり専用のボタンを作成する必要があるのですね。。
コントロールを自作することになれていないので
頂いたPGを参考に、作成しようと思います。
ご丁寧に対応頂きありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ボタンの枠線の様なものを消したい
Visual Basic(VBA)
-
Enabled=Falseのテキストボックスの文字の色
Visual Basic(VBA)
-
VB.netでメソッドからコントロールを取得
Visual Basic(VBA)
-
-
4
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
5
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
6
CloseとDisposeの違い
Visual Basic(VBA)
-
7
フォームの再読み込み
Visual Basic(VBA)
-
8
タブキー押下時のイベントをひろいたい。
Visual Basic(VBA)
-
9
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
10
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
11
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
12
SPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?
Visual Basic(VBA)
-
13
ボタンの文字色を変更したい
Visual Basic(VBA)
-
14
コンソールアプリケーションのコマンドプロンプト画面を非表示
Visual Basic(VBA)
-
15
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
-
16
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
17
ビットマップ(bmp)形式で背景を透過にできる?
画像編集・動画編集・音楽編集
-
18
コンボボックスのtag情報の取得方法
Visual Basic(VBA)
-
19
FriendとPublicの違い。。。
Visual Basic(VBA)
-
20
VB.NETでのイベントの途中終了
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
セルをマクロのボタンにしたい。
-
ユーザーフォームに別シートか...
-
C#プログラムで、ボタンをショ...
-
Excel VBA Application.caller...
-
VBAで多数のプログラムを一つの...
-
ボタンをマウスで押し続けたと...
-
ボタンコントロールの改行(Win...
-
コマンドボタンやイメージにマ...
-
プロシージャからイベントをコ...
-
VBA CommandButtonの文字ずれ
-
excel シート上のボタンが動かない
-
ボタン上にビットマップ、アイ...
-
モーダルダイアログで発生する...
-
MFCを起動する時、初期化方法が...
-
Access VBA でデータペーストを...
-
VB 電卓 数字キーを押して...
-
ボタンの枠線の様なものを消したい
-
ボタンの表示を改行表示したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
セルをマクロのボタンにしたい。
-
コマンドボタンやイメージにマ...
-
VBA CommandButtonの文字ずれ
-
Excel VBA Application.caller...
-
フォームの再読み込み
-
VB.net でトグルボタンを実現し...
-
Excel マクロ 閉じるボタン
-
[VB.net] ボタン(Flat)のEnable...
-
VBAのボタンの位置が変わって困...
-
プロシージャからイベントをコ...
-
閉じると「+」になり開くと「-...
-
ボタンをマウスで押し続けたと...
-
C#プログラムで、ボタンをショ...
-
VBAで多数のプログラムを一つの...
-
Access VBA でデータペーストを...
-
アイコンとボタンの違い
-
ボタン
おすすめ情報