質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

1回答

15692閲覧

C# Windowsフォーム ボタンをデフォルト色に戻したい

thkana

総合スコア7639

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

0クリップ

投稿2019/01/07 16:14

ボタンのBackColorを一度変更したあと、Enabled true/false切り替えの振る舞いも含めてもとに戻すにはどんな値を設定すればよいのでしょうか。

特に色などを変更していないボタンであれば、Enabledプロパティをtrue/false切り替えるとBackColorが切り替わります。
しかし、BackColorを設定してみたところ、Enabledを切り替えてもボタンの背景色が変わらなくなりました。

端的な例としてはフォームに3つのボタンを貼り付けて

C#

1 private void button3_Click(object sender, EventArgs e) 2 { 3 button1.BackColor = button2.BackColor; 4 button1.Enabled ^= true; 5 button2.Enabled ^= true; 6 }

としてbutton3を押してbutton1/button2のEnabledを切り替えてもbutton1の背景色は変わらず、更にtrue/falseどちらの状態でもbutton1とbutton2で色が異なります。
ボタンの色が異なる
button1のBackColorを変更しただけなので、button1のBackColorにしかるべき値を設定すればbutton2と同じ振る舞いになって欲しいのですが...
どんな値を設定すればbutton1とbutton2の色を同じに出来る(button1を変更前に戻せる)のでしょうか。
ご存知の方、教えていただければと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ご質問の現象は私も知らなかったのでつい調べてしまったのですが、まんま同じ質問がStack overflowにありましたのでご案内します。
How to reset to default button BackColor?

要は、button1を元(デフォルト)の色に戻すときにButton.UseVisualStyleBackColorプロパティをtrueにする必要があります。

C#

1//button1.BackColor = default(Color); 2//button2のBackColorをもって元の色とする 3button1.BackColor = button2.BackColor; 4button1.UseVisualStyleBackColor = true;

当方の環境、Windows 7とWindows 10、.NET Framework 4.7.1 のプロジェクトで試した限りではこれで元に戻り、enable/disableもOKでした。

Button.UseVisualStyleBackColorはもともとtrueなのですが、Button.BackColorに新しい値をセットすると同時にfalseになってしまうので、trueに戻す必要がありました。

投稿2019/01/07 17:12

編集2019/01/07 17:25
dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2019/01/08 14:04

UseVisualStyleBackColorプロバティでバッチリでした。 日本語ではBackColorをSystem.Drawing.SystemColors.Controlにしてみろ、ぐらいまでしかたどり着けませんでした(つまりEnabledの切り替えには無力)が... dodox86さんもご存知ではなかったとのことで検索されたかと思いますが、キーワードはどのようなものを使われたのでしょうか。多分その辺のアタリの付け方とかが参考になりそうな気がするので、差し支えなければ教えていただければと思います。
dodox86

2019/01/08 15:53 編集

お役に立てて良かったです。検索した時のワードについて、正しくは思い出せないのですが、それっぽく、単語と文章を並べていくつか試してたことは確かです。今思いついた限りですが、 「WidowsForms How to revert background color for button」とか、 「Windows Forms How to set default background color of button」とか。必ずしも正しい英文ではなかったと思います。 ※現に、今回再度試したら微妙に検索結果が変わりましたw
thkana

2019/01/09 14:57

なるほど、結構文章にしちゃうんですね。私はわりと単語(名詞)をいくつか並べるだけ、ということが多かったので。機会をみつけてやってみます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問