1

したがって、次のことを行うボタンクリックのサブがあります。

  1. コンボ ボックス (cmbServerInstall.Text) 内のテキスト エントリが空白の場合、先に進む前にまずユーザーに選択を強制します。
  2. それ以外の場合は、文字列 (strGameServer) にコンボ ボックス (cmbServerInstall.Text) 内のテキストが入力されます。
  3. ここから、MessageBox に Yes/No オプションが表示され、ユーザーが続行するかどうか尋ねられます。

ここで問題が発生します。

私がしたいこと

  1. ユーザーが「はい」を選択した場合は、別の if/else を使用して、文字列 strGameServer に何が格納されているかを判断します。これが何に設定されているかに応じて、2 つのバッチ ファイルのいずれかが起動されます (現時点ではファイル パスが同じであることは理解しています。後で更新する予定です)。
  2. ユーザーが「いいえ」を選択した場合は、コンボボックス cmbServerInstall から選択を削除します。

このままでは何が起きているのか

  1. 基本的に、シェル コマンドは、MsgBoxResult が Yes か No かに関係なく、バッチ ファイルを起動します。

誰かが親切に以下のコードを見て、私が間違っている方向に私を向けることができますか? ネストされた IF は、私をより良くしているようです。

    Dim strGameServer As String

    If cmbServerInstall.Text = "" Then
        MessageBox.Show("Please select a game server to install", "No game server selected", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
    Else
        strGameServer = cmbServerInstall.Text
        MessageBox.Show("You have chosen" + " " + strGameServer + "." + " " + "Please confirm you wish to proceed with your selection.", "Confirm game server selection", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
        If MsgBoxResult.Yes Then
            If strGameServer = "Counter-Strike: Global Offensive" Then
                Shell("C:\Users\Damon\Desktop\YorkshaLAN Server Creator\YorkshaLAN Server Setup.bat", AppWinStyle.NormalFocus)
            Else : strGameServer = "Team Fortress 2"
                Shell("C:\Users\Damon\Desktop\YorkshaLAN Server Creator\YorkshaLAN Server Setup.bat", AppWinStyle.NormalFocus)
            End If
        Else
            cmbServerInstall.Text = ""
        End If

        cmbServerInstall.Text = ""
        cmbServerInstall.Enabled = False
        btnServerGoInstall.Enabled = False
    End If
End Sub
4

2 に答える 2

1

MessageBox.Show からの結果を保存してから確認するか、1 行で確認する必要があります。

元のコードの編集:

If cmbServerInstall.Text = "" Then
    MessageBox.Show("Please select a game server to install", "No game server selected", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
Else
    Dim strGameServer As String = cmbServerInstall.Text ' Moved init to avoid declaration without use '
    If MessageBox.Show("You have chosen" & " " & strGameServer & "." & " " & "Please confirm you wish to proceed with your selection.",
      "Confirm game server selection",
      MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) =MsgBoxResult.Yes Then
        If strGameServer = "Counter-Strike: Global Offensive" Then
            Shell("C:\Users\Damon\Desktop\YorkshaLAN Server Creator\YorkshaLAN Server Setup.bat", AppWinStyle.NormalFocus)
        Else
            strGameServer = "Team Fortress 2"
            Shell("C:\Users\Damon\Desktop\YorkshaLAN Server Creator\YorkshaLAN Server Setup.bat", AppWinStyle.NormalFocus)
        End If
    Else
        cmbServerInstall.Text = ""
    End If

    cmbServerInstall.Text = ""
    cmbServerInstall.Enabled = False
    btnServerGoInstall.Enabled = False
End If

サブ終了

于 2013-09-05T22:26:35.847 に答える