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

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

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

8713閲覧

WPFのトグルボタン風ボタン

Kokko3

総合スコア20

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2021/08/10 10:47

前提・実現したいこと

 ボタンを横に並べ、
トグルボタンのように動作させたいと思っている。
できたら、どのボタンを押した状態なのかも把握したい。

コード

 <Button Name="B1" Width="50" BackGround="Red"/>
<Button Name="B2" Width="50" BackGround="Blue"/>
<Button Name="B3" Width="50" BackGround="Green"/>
<Button Name="B4" Width="50" BackGround="Pink"/>



<Button Name="B10" Width="50"/>

考えた事

 ボタンをクリックした場合、BackGroundまたはBorderを黄色にする
クリックされなかったボタンはデフォルト色にする

Switchで色変更をすることは可能そうだということは分かったものの
大量にボタンがあるときに向かない。何より効率が悪い。

そもそもデータの扱い方が分かっていないのだろうと思うのだが
良いサイトがあれば教えてほしい。

補足情報(FW/ツールのバージョンなど)

WPFアプリ(.NET Framework)
.NET Framework 4.7.2

TN8001👍を押しています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/08/10 13:46

質問者さん、どういう偉い人かは知らないけど、人にものを尋ねるのにその文章はいかがなものかと思うのだが・・・
Kokko3

2021/08/12 01:58

Zuishinさん、今更だが回答ありがとう。 俺が欲しかったのはRadioButtonの方だった。 説明不足で申し訳ない。
K_3578

2021/08/12 01:59

https://teratail.com/legal 第7条15項で 「当社、本サービスの他の登録ユーザーまたはその他の第三者に不利益、損害、不快感を与える行為」は 禁止されてるんですけど、 自分がネット弁慶だからとかいう自己都合でコミュニティで敬語を使わないのは他の登録ユーザーに不快感を与える行為では?
Kokko3

2021/08/12 02:08 編集

体言止めで記載している内容について 「不愉快だ」と言われるのは意味が分からないな。 「ですます」以外は認めないとは記載されていないし、 その程度で不快感を与えられるとかヤバすぎるでしょう。 嫌なら回答しなきゃ良いし、妙に絡んで「敬え!敬語使え!」って 荒らし以外の何物でもないですねぇ。
K_3578

2021/08/12 02:13

殆どの人はですます調でコミュニケーションを取ってるんだからそれぐらい面倒くさがらずにやれば いいじゃないですか。 善意で成り立ってるコミュニティなんですから普通はコミュニティの空気に合わせるのが是でしょう。 > 「敬え!敬語使え!」 誰もそんな事言ってないんですけどね。自分ルールを無理やり押し通そうとしてるのはkokko3さんの 方だと思いますが。
Kokko3

2021/08/12 02:17

SurferOnWwwさん(この人はまともそう) Zuishin(この人は俺と同じ口調で、自分は関係ないように話しているが?) 俺以外にも言ってほしいね。 Zuishinが絡んでこなきゃ、こんなことになってないのにな。 SurferOnWwwさんの修正案を見て、「次回はそうしよう」と思ったさ。 だが、Zuishinが絡んでずっと煽って荒らしてくるから 今回は絶対に修正しない。
Zuishin

2021/08/12 02:19

「言われなきゃしてたのに!」って小学生か。
Kokko3

2021/08/12 02:20

Zuishin 煽りもしょぼくなったな
Zuishin

2021/08/12 02:21

煽ってないからな。
K_3578

2021/08/12 02:24

>kokko3さん 心情まで読める訳じゃないので知りませんけど、kokko3さんの口調に合わせているのでは? 私が前に見た時はですます調で話されていたと思うので。
Kokko3

2021/08/12 02:28

K_3578さん 同じ土俵に立ったら、もう終わりでしょ?
Kokko3

2021/08/12 02:28

Zuishin それはなにより
K_3578

2021/08/12 02:33

>kokko3さん それはわかりません。Zuishinさんがどう考えてそういう風にしてるのかわからないので。 コメントしたのは私ですが質問から逸脱した内容を延々と続けるのもこのコメント欄の使い方 として誤ってるのでここで終わらせてもらいます。 横槍申し訳ありません。
Kokko3

2021/08/12 02:35

K_3578さん ありがとう、楽しかったよ
guest

回答1

0

ベストアンサー

ボタンを横に並べ、
トグルボタンのように動作させたいと思っている。
できたら、どのボタンを押した状態なのかも把握したい。

Zuishinさんが書いておられますが、トグルボタンは既にあります。
ToggleButton クラス (System.Windows.Controls.Primitives) | Microsoft Docs

わかっておられるでしょうが、これはCheckBoxのボタン版です。
それぞれにOn・Off状態があります。

そうではなくRadioButtonのボタン版が欲しい場合は、スタイルをToggleButtonにするという大技?があります。

どちらもボタンの見た目な場合は、ThreeStateは設定しないほうがいいでしょう。
まったく違いが判りません(自分でスタイルをいじる場合はその限りではありません)

ボタンをクリックした場合、BackGroundまたはBorderを黄色にする
クリックされなかったボタンはデフォルト色にする

スタイルをいじればどうとでもなりますが、何か理想の見た目がありますか?

xml

1<Window 2 x:Class="Questions353667.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 SizeToContent="WidthAndHeight"> 6 <StackPanel> 7 <GroupBox Header="CheckBox"> 8 <StackPanel Orientation="Horizontal"> 9 <CheckBox 10 MinWidth="50" 11 Content="C1" 12 IsChecked="True" /> 13 <CheckBox 14 MinWidth="50" 15 Content="C2" 16 IsChecked="True" /> 17 <CheckBox MinWidth="50" Content="C3" /> 18 <CheckBox 19 MinWidth="50" 20 Content="C4" 21 IsChecked="{x:Null}" 22 IsThreeState="True" /> 23 </StackPanel> 24 </GroupBox> 25 <GroupBox Header="ToggleButton"> 26 <StackPanel Orientation="Horizontal"> 27 <ToggleButton 28 MinWidth="50" 29 Content="B1" 30 IsChecked="True" /> 31 <ToggleButton 32 MinWidth="50" 33 Content="B2" 34 IsChecked="True" /> 35 <ToggleButton MinWidth="50" Content="B3" /> 36 <ToggleButton 37 MinWidth="50" 38 Content="B4" 39 IsChecked="{x:Null}" 40 IsThreeState="True" /> 41 </StackPanel> 42 </GroupBox> 43 <GroupBox Header="RadioButton"> 44 <StackPanel Orientation="Horizontal"> 45 <RadioButton 46 MinWidth="50" 47 Content="R1" 48 IsChecked="True" /> 49 <RadioButton MinWidth="50" Content="R2" /> 50 <RadioButton MinWidth="50" Content="R3" /> 51 <RadioButton 52 MinWidth="50" 53 Content="R4" 54 IsChecked="{x:Null}" 55 IsThreeState="True" /> 56 </StackPanel> 57 </GroupBox> 58 <GroupBox Header="RadioButton(Button Style)"> 59 <StackPanel Orientation="Horizontal"> 60 <RadioButton 61 MinWidth="50" 62 Content="B1" 63 IsChecked="True" 64 Style="{StaticResource {x:Type ToggleButton}}" /> 65 <RadioButton 66 MinWidth="50" 67 Content="B2" 68 Style="{StaticResource {x:Type ToggleButton}}" /> 69 <RadioButton 70 MinWidth="50" 71 Content="B3" 72 Style="{StaticResource {x:Type ToggleButton}}" /> 73 <RadioButton 74 MinWidth="50" 75 Content="B4" 76 IsChecked="{x:Null}" 77 IsThreeState="True" 78 Style="{StaticResource {x:Type ToggleButton}}" /> 79 </StackPanel> 80 </GroupBox> 81 </StackPanel> 82</Window>

アプリ画像

投稿2021/08/10 14:03

編集2023/07/28 16:16
TN8001

総合スコア9405

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

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

Kokko3

2021/08/12 00:26

TN8001さん 言いたい事を察して頂き、ありがとう。凄く助かった。ありがとう。 口調に関しては癖のようなもので、申し訳ない。 直す予定ではあるものの、今回は勘弁してほしい。 また、トグルボタンがチェックボックスのような役割と言うのは知らなかった。勉強になった。 例に出して頂いた、RadioButton(Button Style)が 自分の作りたいものだというのが分かった。 ただ、後出しで申し訳ないのだけれど 電卓を作るときみたいにColumnDefinitionsを利用し Grid.Row、Grid.Columnを利用して配置している。 UniformGridを利用している部分とは別だと判定されるみたいだけれど GridRow、GridColumnを利用している場所だと 同じものだと判定されてしまうらしい。 Grid.ColumnSpanを利用し、まとめることも考えたのだけれど 上手く配置が出来ないため別途検討中。 ToggleButtonを利用する場合に、StackPanelなどで囲っておく必要があると思うのだけれど、ColumnDefinitionsを利用している際に どのように囲えば良いか分からないので、案があったら教えてほしい。 よろしくお願いいたします。
Zuishin

2021/08/12 01:01

普段から人と話す人にそんな癖がつくわけがない。 上司や客など目上の人に話すように話すといいぞ。
Kokko3

2021/08/12 01:15

Zuishinさん ネット弁慶というやつだ。本題とはズレるため気にしないでほしい。
Zuishin

2021/08/12 01:26

すぐ直せばいいだけ。「気にするな」ではなく、「気にさせない」ようにするんだよ。自分が。
Kokko3

2021/08/12 01:55

質問に対する回答をするわけでもなく、ただ煽りたいだけだろう? 他所行ってくれ。 質問に対する回答でもなく、TN8001さんがくれた回答への返信で 荒らすのは勘弁してくれ。邪魔くさい。
Zuishin

2021/08/12 02:01

お前自身が荒らしたいだけだろう。すぐ直せ。そうしたら誰にもそのことについては言われなくなるから。 それに、RadioButton ではなぜいけないのかについて答えてないのはお前だろう。返事もしないで回答だけもらおうなど図々しい。
Kokko3

2021/08/12 09:15 編集

Zuishin あなたの投稿も、口調が悪くて 利用条件に当てはまってないように思えるけどな。 他の質問に対する回答ね。 上から目線で、どこの回答を見に行っても口調が悪い。 質問者を全面的に馬鹿にしているとしか思えない。 今回に至っては、回答をしていないのに絡んできて 他者の回答蘭で俺に文句を言ってくる始末だからな。 そして妙に絡んでウザい。ブロック機能が心底欲しいね。 俺が口調を改めた場合、 「俺が変えてやったんだ!」とふんぞり返りそうだから お前のみ絶対に直さないわ。
TN8001

2021/08/12 06:37

> 口調に関しては癖のようなもので、申し訳ない。 私は全く気になっていないのでだいじょぶです。 > ColumnDefinitionsを利用している際に > どのように囲えば良いか分からないので、案があったら教えてほしい。 GroupNameってのがあります。 これを同じ名前にしておくと同じグループだと認識されます。 [RadioButton.GroupName プロパティ (System.Windows.Controls) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.radiobutton.groupname どんな配置でも行けるかどうかまではわかりませんが、うまくいかなかった場合はxamlを教えてください。
Kokko3

2021/08/12 08:51

TN8001さん 心が広い!本当にありがとうございます。(一応丁寧にしておきます) GroupNameで名前を部分的に同じにしてみたところ、 問題なく上手くいくようになりました。 本当にありがとうございます! また分からないことが出来たら質問するかもしれません。 その時はよろしくお願いします!高評価+10つけたいくらい感謝してます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問