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

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

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

Re[2]: VB.NETにおけるラジオボタンのタブ移動について


(過去ログ 114 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■67337 / inTopicNo.1)  VB.NETにおけるラジオボタンのタブ移動について
  
□投稿者/ やまだ (1回)-(2013/07/25(Thu) 18:47:22)

分類:[VB.NET/VB2005 以降] 

VB.NETにおけるラジオボタンのタブ移動について質問があります。
VB6のソースを.NET化したのですが(.NET化したのは別の人)、.NET化した後のラジオボタンのタブ移動時の動作が
以下のように変わりました。

VB6版 :ラジオボタンにフォーカスがあたっている状態でタブキーを押すと、次のコントロールにフォーカスを
     セットする。
.NET版:ラジオボタンにフォーカスがあたっている状態でタブキーを押すと、同じグループボックス内のもう
     一方のラジオボタンにフォーカスをセットする。

VB6版と同じ動作となるようにしたいのですが、何かアドバイスいただけないでしょうか。

※VB6版と同じ動作をするフォームもあったので、うまく動作しないフォームと.vb、.Designer.vb、プロパティを
 比較しましたが、これといった差異は見当たりませんでした。

引用返信 編集キー/
■67342 / inTopicNo.2)  Re[1]: VB.NETにおけるラジオボタンのタブ移動について
□投稿者/ shu (358回)-(2013/07/26(Fri) 09:55:43)
No67337 (やまだ さん) に返信

グループボックスを配置してその中にラジオボタンを配置すれば
希望の動作になるはずです。

何かイベントの記述が影響されていないでしょうか?

実はラジオボタンがグループボックス内に配置されておらず親コンテナに
配置されていて位置的にそういう風に見えているだけとかはどうでしょう?

四角いのはチェックボックスですがそれだとフォーカス移動しますが
そういうことではないですよね?
引用返信 編集キー/
■67348 / inTopicNo.3)  Re[1]: VB.NETにおけるラジオボタンのタブ移動について
□投稿者/ 魔界の仮面弁士 (274回)-(2013/07/26(Fri) 12:06:29)
No67337 (やまだ さん) に返信
> VB6版 :ラジオボタンにフォーカスがあたっている状態でタブキーを押すと、次のコントロールにフォーカスを
>      セットする。
> .NET版:ラジオボタンにフォーカスがあたっている状態でタブキーを押すと、同じグループボックス内のもう
>      一方のラジオボタンにフォーカスをセットする。

コントロールの親子階層を確認してみてください。VB6 のフォームデザインが、

Form1
├Frame1
│├Option1
│├Option2
│├Option3
│├Option4
│├Option5
│└Option6
└Command1

だと思っていたら、実は

Form1
├Frame1
│├Option1
│└Option2
├─Option3
├─Option4
├Frame2 (Captionなし、BorderStyleなし)
│├Option5
│└Option6
└Command1

だった、なんてことはありませんか?

Frame の上に載せてあると思ったら、座標が重なっているだけで、実は Form に直接貼ってあったとか。

あるいは 枠なし Frame や枠なし PictureBox の上にコントロールが貼られていて、
それらのコンテナコントロールの存在に気付いていなかったとか。


> VB6版と同じ動作となるようにしたいのですが、何かアドバイスいただけないでしょうか。

コントロールの親子階層が下記のようになっていて、
TabIndex が上から順に0〜9 と振られていたとします。


Form
├RadioButton1
├GroupBox1
│├RadioButton2
│└RadioButton3
├RadioButton4
├GroupBox2
│├RadioButton5
│└RadioButton6
└RadioButton7


この場合、ラジオボタンのグループは
 ・Form1 上の RadioButton1、RadioButton4、RadioButton7
 ・GroupBox1 上の RadioButton2、RadioButton3
 ・GroupBox2 上の RadioButton5、RadioButton6
の 3 グループとなります。そのため、フォーカス順は、
 RadioButton1 → RadioButton2 → RadioButton5 → (RadioButton1 に戻る)
のように遷移します。この仕様は VB6 でも VB.NET でも一緒です。
引用返信 編集キー/
■67382 / inTopicNo.4)  Re[2]: VB.NETにおけるラジオボタンのタブ移動について
□投稿者/ やまだ (3回)-(2013/07/29(Mon) 09:05:05)
shuさん
魔界の仮面弁士さん

コメントありがとうございました。
また返信遅くなり失礼しました。

アドバイス頂いた点について確認しましたが、特に問題は見当たりませんでした。
で、いろいろ試してみたのですが、Designer.vbでラジオボタンのチェック状態の
コード位置を以下の通りに変更することで解決しました。
(Me.ラジオボタン名.Checked = Trueの処理が、他のボタンのプロパティ指定よりも
先にあるのがいけなかったみたいです。)

[修正前]
Me._button1.プロパティ=XX
Me._button1.プロパティ=YY
Me._button1.プロパティ=ZZ
Me._button1.Checked=True ★

Me._button2.プロパティ=XX
Me._button2.プロパティ=YY
Me._button2.プロパティ=ZZ

Me._button3.プロパティ=XX
Me._button3.プロパティ=YY
Me._button3.プロパティ=ZZ

[修正後]
Me._button2.プロパティ=XX
Me._button2.プロパティ=YY
Me._button2.プロパティ=ZZ

Me._button3.プロパティ=XX
Me._button3.プロパティ=YY
Me._button3.プロパティ=ZZ

Me._button1.プロパティ=XX
Me._button1.プロパティ=YY
Me._button1.プロパティ=ZZ
Me._button1.Checked=True ★

アドバイスいただきありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -