• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2008EEのラジオボタンのチェック無し)

VB2008EEのラジオボタンのチェック無し

このQ&Aのポイント
  • VB2008EEのラジオボタンのチェック無しにより、batファイルが4つすべて実行されてしまう問題が発生しています。
  • CheckBox1.CheckStateを使用して、チェックボックスの状態を確認し、チェックがされていない場合に変数を変更することができます。
  • Button1_Clickイベントハンドラでは、各変数の値に応じて対応するbatファイルを実行する処理が行われています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ふと思ったのですが、変数を利用しないでもできるのでは? 変数(aaa~ddd)を使う必要性がなければ、#1で発言した「ラジオボタン達_CheckedChanged」関数も不要となります。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   '折角なので、Frameworkを利用すた形式での起動   Dim l_procSInf As New ProcessStartInfo("cmd")   l_procSInf.WindowStyle = ProcessWindowStyle.Normal 'Normalは規定値なので設定しなくてよし   If Me.RadioButton1.Checked Then     l_procSInf.Arguments = "/c xxx.bat"   ElseIf Me.RadioButton2.Checked Then     l_procSInf.Arguments = "/c yyy.bat"   ElseIf Me.RadioButton3.Checked Then     l_procSInf.Arguments = "/c zzz.bat"   ElseIf Me.RadioButton4.Checked Then     l_procSInf.Arguments = "/c www.bat"   End If   Dim l_prcProc As Process = Process.Start(l_procSInf)   l_prcProc.WaitForExit() End Sub

yurielna
質問者

お礼

変数はここ以外でも使用するので、無くせません。 ありがとうございます。  

その他の回答 (3)

回答No.4

rk_lesさん お気持ちよくわかります。 私もさっきの質問以前に、纏めることを推奨したのですが、、、 http://okwave.jp/qa/q5892351.html 質問者さん rk_lesさんが言うことを、面倒だと思っても、無理にでも実現した方がいいですよ。 既に設計段階の問題を指摘されておられますが、よいプログラムというのは、変更改造に強い作りをしているという特徴があります。 「設計ミス」自体は仕方がありません。誰でもあります。 しかしその発生を未然に防ぐ効果も兼ねるのですよ。 「口うるさい人たちみたい」に思われるかもしれませんが、、、 纏める事を諦めずに、早い段階で作りを見直す作業に入るべきだと、私も思います。

  • rk_les
  • ベストアンサー率63% (23/36)
回答No.3

前の質問で私の回答ちゃんと理解しましたか?思いっきり出来てないと見受けられます。 まず前回のプログラムと記述方法だいぶ違うようですが、今回載せてあるソースのいけない場所を列挙しましょうか。 ・イベントが纏められておらず冗長 ・分岐で一回一回IFを終了させているため、条件にあるラジオボタンを全部チェックした後の実行で全部通ること。 大きく二つです。 前回の質問でイベントを纏める処理が書かれていたのになぜやらないのでしょうか? 後、前回の質問のプログラムで動かないのはあなたの設計ミスです。 質問は大いに結構。けど返信した内容を全く理解しようとしないのは頂けません。 前回の質問で変数を減らすと他にも影響がでる(この時点で設計ミス)とのことなので前回の質問で記述したのに少し加えたものを載せておきます。 Private aaa As String Private bbb As String Private ccc As String Private ddd As String Private Sub RadioButton_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged _ RadioButton3.CheckedChanged, RadioButton4.CheckedChanged Select Case sender.text Case "RadioButton1" aaa = "1" Case "RadioButton2" aaa = "2" Case "RadioButton3" aaa = "3" Case "RadioButton4" aaa = "4" End Select End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If (aaa = "1") Then TextBox1.Text = aaa Shell("cmd /c xxx.bat", AppWinStyle.NormalFocus, True) ElseIF (bbb = "2") Then TextBox2.Text = bbb Shell("cmd /c yyy.bat", AppWinStyle.NormalFocus, True) ElseIF (ccc = "3") Then TextBox3.Text = ccc Shell("cmd /c zzz.bat", AppWinStyle.NormalFocus, True) ElseIF (ddd = "4") Then TextBox4.Text = ddd Shell("cmd /c ppp.bat", AppWinStyle.NormalFocus, True) End IF End Sub

yurielna
質問者

お礼

前の質問のNo.7でcase使った記述は出来ないと書いています。  

yurielna
質問者

補足

・イベントが纏められておらず冗長 質問に関係ありません。 ・分岐で一回一回IFを終了させているため、条件にあるラジオボタンを全部チェックした後の実行で全部通ること。 それの上での質問です。 批判されて不快ですので、今後はスルーしてください。

回答No.1

一つのイベントに一つの関数をハンドリングさせずに、纏めてしまいましょう。 Private Sub RadioButton1_CheckedChanged( Private Sub RadioButton2_CheckedChanged( Private Sub RadioButton3_CheckedChanged( Private Sub RadioButton4_CheckedChanged( の各イベント関数は全て不要です。コメントアウトしてください。 ↓これを追加 Private Sub ラジオボタン達_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged, RadioButton4.CheckedChanged   aaa = IIf(Me.RadioButton1.Checked, "1", "")   bbb = IIf(Me.RadioButton2.Checked, "2", "")   ccc = IIf(Me.RadioButton3.Checked, "3", "")   ddd = IIf(Me.RadioButton4.Checked, "4", "") End Sub

関連するQ&A

専門家に質問してみよう