C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

MDIアプリケーションでラジオボタンの挙動がおかしい /おくやふ (18/09/08(Sat) 17:35) #88573
Re[1]: MDIアプリケーションでラジオボタンの挙動がおかしい /魔界の仮面弁士 (18/09/08(Sat) 19:49) #88578
  └ Re[2]: MDIアプリケーションでラジオボタンの挙動がおかしい /おくやふ (18/09/08(Sat) 21:00) #88579
    └ Re[3]: MDIアプリケーションでラジオボタンの挙動がおかしい /Hongliang (18/09/08(Sat) 21:16) #88580
      └ Re[4]: MDIアプリケーションでラジオボタンの挙動がおかしい /おくやふ (18/09/08(Sat) 21:28) #88581 解決済み


親記事 / ▼[ 88578 ]
■88573 / 親階層)  MDIアプリケーションでラジオボタンの挙動がおかしい
□投稿者/ おくやふ (1回)-(2018/09/08(Sat) 17:35:32)

分類:[.NET 全般] 


MDIアプリケーションを新規作成し、
子ウインドウを二つ生成します。

そして片方のウインドウにラジオボタンを生成します。

この状態でプログラムを起動し、
ラジオボタンを押し、ラジオボタンにフォーカスが合った状態にします。
次にもう一つのフォームを一度クリックした後、
再度のラジオボタンが配置されたフォームのどこかをクリックすると
そのラジオボタンがクリックされたものとして反応してしまい
チェックが反転してしまいます。
もしラジオボタンを押した場合には、二度押しされた状態となり
元のチェック状態に戻ってしまいます。

この現象はラジオボタンだけ見られるもので
通常のボタンだとみられません。

また、SDIでも見られない現象です。

これは一体なぜなのでしょうか?

自分で作成したプログラムもアップしましたので
試していただけないでしょうか?

http://fast-uploader.com/file/7091951192361/
Pass: 123456






[ □ Tree ] 返信 編集キー/

▲[ 88573 ] / ▼[ 88579 ]
■88578 / 1階層)  Re[1]: MDIアプリケーションでラジオボタンの挙動がおかしい
□投稿者/ 魔界の仮面弁士 (1829回)-(2018/09/08(Sat) 19:49:53)
No88573 (おくやふ さん) に返信
> 自分で作成したプログラムもアップしましたので
> 試していただけないでしょうか?
> http://fast-uploader.com/file/7091951192361/
> Pass: 123456

有効期限のあるストレージだと、質問内容が過去ログ倉庫に流れた後で
保持期限が切れて見えなくなってしまう可能性が高いのが残念なところですね…。



> そして片方のウインドウにラジオボタンを生成します。
「ラジオボタンが一つしか無い状態」であることが、そもそも画面設計として間違っています。
RadioButton は、「どれも選択されていない状態」の表現には向きません。

確かに、AutoCheck を False にすることで、選択状態を自己管理できなくは無いのですが、
RadioButton は、複数(通常は2個以上8個未満)の排他的な選択肢から、
1 つだけを選択するために使用する場合に使用されるべきものです。

今回のようにトグルボタン的に使用したいのであれば、RadioButton ではなく
CheckBox の利用を検討してください。こちらも Appearance を Button に変更できます。


> If .Checked = True Then
>   .Text = "ON"
>   .BackColor = Color.Red
> Else
>   .Text = "OFF"
>   .BackColor = Color.Blue
> End If

上記のような表現は、Windows のデザインガイド的には非推奨とされています。
https://msdn.microsoft.com/ja-jp/library/aa511488.aspx
https://msdn.microsoft.com/ja-jp/library/aa511452.aspx

On/Off でトグル表示されるボタンの Text は、Windows の統一的な仕様において
 『そのチェック ボックスがオンのときの状態を説明するもの』と
することが望ましいとされています。

これはトグルボタンのテキストが「現在の状態を表す」のか、
それとも「ボタンを押すことでその状態になることを表す」のかが
アプリケーションによって曖昧になってしまうことを防ぐための、
統一された標準的なデザイン仕様です。




> ラジオボタンを押し、ラジオボタンにフォーカスが合った状態にします。
> 次にもう一つのフォームを一度クリックした後、
> 再度のラジオボタンが配置されたフォームのどこかをクリックすると
> そのラジオボタンがクリックされたものとして反応してしまい
> チェックが反転してしまいます。

(1) コンテナ内の RadioButton がすべて非チェック状態である
(2) その中のいずれかの RadioButton がフォーカスを持っている
(3) そのフォームは非アクティブ状態である

この条件を満たしている状態で、フォームがアクティブ状態になると、
フォーカスを持っていたラジオボタンが、自動的にチェック状態に遷移しようとするためです。

先に述べた通り、ラジオボタンは「2 つ以上の選択肢のいずれか 1 つ」が
選択される状態を表現するものです。UI 設計を見直されることをお奨めします。
[ 親 88573 / □ Tree ] 返信 編集キー/

▲[ 88578 ] / ▼[ 88580 ]
■88579 / 2階層)  Re[2]: MDIアプリケーションでラジオボタンの挙動がおかしい
□投稿者/ おくやふ (2回)-(2018/09/08(Sat) 21:00:17)
そうだったのですね・・・
トグルボタンで検索するとラジオボタンを使った方法しか見つからなかったので
疑いなくこれを使っていました。

いまチェックボックスを使った方法も試してみたのですが
これだと、文字数と文字サイズでボタンのサイズが決まってしまうため、
ボタンを押すことで、文字数が変わるので
ボタンサイズも連動して変化してしまうのですが・・・・

文字によらず、ボタンサイズを設定することはできないのでしょうか?

[ 親 88573 / □ Tree ] 返信 編集キー/

▲[ 88579 ] / ▼[ 88581 ]
■88580 / 3階層)  Re[3]: MDIアプリケーションでラジオボタンの挙動がおかしい
□投稿者/ Hongliang (694回)-(2018/09/08(Sat) 21:16:24)
AutoSizeプロパティをfalseにしてやればいいです。
[ 親 88573 / □ Tree ] 返信 編集キー/

▲[ 88580 ] / 返信無し
■88581 / 4階層)  Re[4]: MDIアプリケーションでラジオボタンの挙動がおかしい
□投稿者/ おくやふ (3回)-(2018/09/08(Sat) 21:28:22)
どうもありがとうございます。

解決済み
[ 親 88573 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -