none
RadioButtonの選択状態を保存して次回起動時に再現したい RRS feed

  • 質問

  • グループボックス内にある二つのラジオボタン、RadioButton1・RadioButton2のどちらが選択状態にあるか保存して
    次回起動時に再現したいのですがうまくできません。
    RadioButton1の方にアプリケーション設定で、型/Boolean、スコープ/ユーザー、値/Trueを設定しても
    次回起動時に再現されません。
    同時にRadioButton2の方にも、型/Boolean、スコープ/ユーザー、値/Falseを設定すると
    RadioButton1が選択されているのは再現されるのですが、
    RadioButton2の選択状態が再現されません。(どちらもFalseになる)
    また両方に設定すると通常使用時にもう一方のボタンを選択すると一時的に2つともFalseになってしまいます。
    つまりボタンを切り替えるときは2回クリックしないと切り替わらないのです。

    おそらくやり方が間違っていると思うのですが、
    ラジオボタンの選択状態を保存して次回起動時に再現するにはどのようにすればよいのでしょうか。
    2008年8月6日 5:45

回答

  • どうもRadioButtonはうまく動かないようですね。そこで、CheckedChangedでどのRadioButtonがチェックされているかをSettingsに覚えておき、その情報を元に次回開いた時にCheckを付けるようです。

     

    Radio Buttons - How Do I Make Them Stay Checked When On Another Form?
    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2115638&SiteID=1

    2008年8月6日 6:22
    モデレータ
  • #どうも話が見えないです。

     

    Code Snippet

    Private Sub Form1_Load(~)

        Me.RadioButton1.Checked = False

        Me.RadioButton2.Checked = True

        Me.RadioButton3.Checked = False

    End Sub

     

     

    特にこのパターンで不都合がおきたことは無いですが。。。

    うまく動かないとは何のことでしょうか?

     

     rockdom さんからの引用

    ぐわ~、英語だぁ(T_T)

     

    英語というだけでやめてしまっては前に進みませんよぉ~。
    #って、名前英語やん。

    2008年8月6日 6:48
  • リンク先は英語ですが、VBのコードがありますので、それを読むと何をやっているのかわかると思いますよ。VBのコードは世界共通語ですから大丈夫だと思います。(^^

     

    実現されたいのは、RadioButtonのCheckedプロパティをアプリケーション設定の値にバインドさせて記憶し、次回開いた時にRadioButtonのCheckedの状態を再現したいということだと思います。TextBoxのTextプロパティだと問題なく動くのですが、どうもRadioButtonのCheckedプロパティだと一度クリックした時には両方のRadioButtonのCheckedがfalseになり、もう一度クリックした時にようやくチェックされた状態になるようです。つまり、2回クリックしないとチェック状態にならないわけです。

    そこで、RadioButtonのCheckedプロパティを直接アプリケーション設定にバインドするのではなく、チェック状態にあるRadioButtonの名前をアプリーケーション設定に記憶し、その名前を元に、次回開いた時にどのRadioButtonがチェックされていたかを再現しているのが、私がリンク先で紹介したコードです。

    2008年8月6日 9:51
    モデレータ

すべての返信

  • どうもRadioButtonはうまく動かないようですね。そこで、CheckedChangedでどのRadioButtonがチェックされているかをSettingsに覚えておき、その情報を元に次回開いた時にCheckを付けるようです。

     

    Radio Buttons - How Do I Make Them Stay Checked When On Another Form?
    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2115638&SiteID=1

    2008年8月6日 6:22
    モデレータ
  • ぐわ~、英語だぁ(T_T)
    2008年8月6日 6:32
  • #どうも話が見えないです。

     

    Code Snippet

    Private Sub Form1_Load(~)

        Me.RadioButton1.Checked = False

        Me.RadioButton2.Checked = True

        Me.RadioButton3.Checked = False

    End Sub

     

     

    特にこのパターンで不都合がおきたことは無いですが。。。

    うまく動かないとは何のことでしょうか?

     

     rockdom さんからの引用

    ぐわ~、英語だぁ(T_T)

     

    英語というだけでやめてしまっては前に進みませんよぉ~。
    #って、名前英語やん。

    2008年8月6日 6:48
  • > Private Sub Form1_Load(~)
    >     Me.RadioButton1.Checked = False
    >     Me.RadioButton2.Checked = True
    >     Me.RadioButton3.Checked = False
    > End Sub

    フォーム・アプリを使う人やその時の状況によっては1がTrueだったり2がTrueだったりまちまちです。
    それを保存して次回起動時にどこがTrueだったか再現するということなのですが……

    とりあえず「どうもRadioButtonはうまく動かない」というレスは大助かりです。
    ならば、フォーム上にRabel1を作ってこれをSettingsに登録、
    RadioButton1_CheckedChangedならばRabel1に"1"を入れる、
    RadioButton2_CheckedChangedならばRabel1に"2"を入れる、
    Form1_LoadのときにRabel1.Text = "1"ならばRadioButton1.Checked = True
    これでできますね。
    Rabel1のVisibleをFalseにすると動作しなかったので、テキストの色をBackColorと同じにすれば
    Rabel1は使う人からは見えなくなります。
    これじゃダメ?(^^ゞ


    > 英語というだけでやめてしまっては前に進みませんよぉ~。

    C++とかでアプリケーションやプラグイン開発してる知り合いに「自分も覚えたい」と言ったところ
    「英語の原書が理解できたり、英語でメールのやりとりが出来なきゃダメだよ」と言われました。
    ソフトウェア会社とデベロッパ契約を締結して、送られてくるAPIのライブラリが理解できないと、ですからね。
    即座に断念しました。せいぜいボクはVBどまりですぅ~
    2008年8月6日 7:43
  •  rockdom さんからの引用

    とりあえず「どうもRadioButtonはうまく動かない」というレスは大助かりです。

     

    その「うまく」がわからないわけですが。。。

    #なにか特殊な動きになってしまうとかという意味

     

     rockdom さんからの引用

    ならば、フォーム上にRabel1を作ってこれをSettingsに登録、
    RadioButton1_CheckedChangedならばRabel1に"1"を入れる、
    RadioButton2_CheckedChangedならばRabel1に"2"を入れる、
    Form1_LoadのときにRabel1.Text = "1"ならばRadioButton1.Checked = True
    これでできますね。

     

    単に保存した値を再現したいということでしょうか?

    であれば、

     

    Code Snippet

    Public Class RadioSettings

        Public Shared SelectedButton As Integer

        Public Shared Sub Load()

        End Sub

        Public Shared Sub Save()

        End Sub

    End Class

     

    Private Sub Form1_Load(~)

        RadioSettings.Load()

        Me.RadioButton1.Checked = (RadioSettings.SelectedButton = 0)

        Me.RadioButton2.Checked = (RadioSettings.SelectedButton = 1)

        Me.RadioButton3.Checked = (RadioSettings.SelectedButton = 2)

        Me.RadioButton4.Checked = (RadioSettings.SelectedButton = 3)

    End Sub

     

     

    とか。

     

     rockdom さんからの引用

    せいぜいボクはVBどまりですぅ~

     

    いや、言語は関係ないですよ。

    2008年8月6日 8:25
  • むむむむむむ……

    初心者なもので上級者から「わからない」と言われるとびびってしまう~

    > 単に保存した値を再現したいということでしょうか?

    タイトルにそう書いたつもりですが……
    「RadioButtonの選択状態を保存して次回起動時に再現したい」

    > その「うまく」がわからないわけですが。。。

    それも最初の投稿に書いたつもりなんですが……
    正確には「次回起動時にうまく再現できない」ですがね。

    trapemiyaさんには理解していただいてると思うのですが……

    あ、いけね! また環境書くの忘れました。
    「Visual Basic 2005 Express Edition」です。
    作成したフォーム・アプリケーションは社内配布することが前提です。
    2008年8月6日 9:33
  • リンク先は英語ですが、VBのコードがありますので、それを読むと何をやっているのかわかると思いますよ。VBのコードは世界共通語ですから大丈夫だと思います。(^^

     

    実現されたいのは、RadioButtonのCheckedプロパティをアプリケーション設定の値にバインドさせて記憶し、次回開いた時にRadioButtonのCheckedの状態を再現したいということだと思います。TextBoxのTextプロパティだと問題なく動くのですが、どうもRadioButtonのCheckedプロパティだと一度クリックした時には両方のRadioButtonのCheckedがfalseになり、もう一度クリックした時にようやくチェックされた状態になるようです。つまり、2回クリックしないとチェック状態にならないわけです。

    そこで、RadioButtonのCheckedプロパティを直接アプリケーション設定にバインドするのではなく、チェック状態にあるRadioButtonの名前をアプリーケーション設定に記憶し、その名前を元に、次回開いた時にどのRadioButtonがチェックされていたかを再現しているのが、私がリンク先で紹介したコードです。

    2008年8月6日 9:51
    モデレータ
  • > RadioButtonのCheckedプロパティをアプリケーション設定の値にバインドさせて記憶し、
    > 次回開いた時にRadioButtonの Checkedの状態を再現したいということだと思います。

    その通りです。

    > RadioButton のCheckedプロパティだと一度クリックした時には両方のRadioButtonのCheckedがfalseになり、
    > もう一度クリックした時にようやくチェックされた状態になるようです。
    > つまり、2回クリックしないとチェック状態にならないわけです。

    そうです、その通りです。
    一時的にすべてのラジオボタンがFalseになるとはラジオボタンとは言えませんよ。
    すべてがFalseの状態のエラー処理なんかも入れないといけないし。

    > Checkedプロパティを直接アプリケーション設定にバインドするのではなく、
    > チェック状態にあるRadioButtonの名前をアプリーケーション設定に記憶し、
    > その名前を元に、次回開いた時にどのRadioButtonがチェックされていたかを再現している

    おお、なるほど~
    ちゃんと解析してませんでしたが、プロパティじゃない別なものを保存してるなとは思ったのですが、
    名前ですか~。よく見るとNameってありますね。
    初心者は「Music_Status」なんてのに混乱しちゃうんですよ……
    2008年8月6日 10:07
  • こんにちは。中川俊輔 です。

     

    trapemiyaさん、まどかさん、回答ありがとうございます。

     

    rockdomさん、フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、

    trapemiyaさん、まどかさんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    rockdomさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年8月20日 9:34