2010-11-30 5 views
-1

私はこの小さなプログラムをHead First C#と読んでいました。私は難易度のレベルのnumericUpDownコントロールを設定するために、ユーザーが一時停止するプログラムを取得しようとしています。コードは次のとおりです。C#でユーザーコントロールを一時停止する方法は?

namespace WACK 
{ 
    public partial class Form1 : Form 
    { 
     public int level; 
     Mole mole; 
     Random random = new Random(); 

     public Form1() 
     { 
      InitializeComponent(); 

      mole = new Mole(random, new Mole.PopUp(MoleCallBack)); 
      MessageBox.Show("Select a Level"); 
      if (level == 1) 
      { 
       timer1.Interval = random.Next(500, 500); 
      } 
      if (level == 2) 
      { 
       timer1.Interval = random.Next(400, 400); 
      } 
      if (level == 3) 
      { 
       timer1.Interval = random.Next(300, 300); 
      } 
      timer1.Start(); 
     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      timer1.Stop(); 
      ToggleMole(); 
     } 

     private void ToggleMole() 
     { 
      if (mole.Hidden == true) 
       mole.Show(); 
      else 
       mole.HideAgain(); 
      if (level == 1) 
      { 
       timer1.Interval = random.Next(500, 500); 
      } 
      if (level == 2) 
      { 
       timer1.Interval = random.Next(400, 400); 
      } 
      if (level == 3) 
      { 
       timer1.Interval = random.Next(300, 300); 
      } 
      timer1.Start(); 

     } 

     private void MoleCallBack(int moleNumber, bool show) 
     { 
      if (moleNumber < 0) 
      { 
       timer1.Stop(); 
       return; 
      } 
      Button button; 
      switch (moleNumber) 
      { 
       case 0: button = button1; break; 
       case 1: button = button2; break; 
       case 2: button = button3; break; 
       case 3: button = button4; break; 
       case 4: button = button5; break; 
       case 5: button = button6; break; 
       case 6: button = button7; break; 
       case 7: button = button8; break; 
       default: button = button9; break; 
      } 

      if (show == true) 
      { 
       button.Text = "Hit Me!"; 
       button.BackColor = Color.Red; 
      } 
      else 
      { 
       button.Text = ""; 
       button.BackColor = SystemColors.Control; 
      } 

      timer1.Interval = random.Next(500, 1000); 
      timer1.Start(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      mole.Smacked(0); 
     } 

     private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
     { 
      level = (int)numericUpDown1.Value; 
     } 

残りのボタンハンドラは、ポストを短くするために省略されています。また、私はモルモットを投稿していません。なぜなら、私のポーズステートメントはどこに行かなければならないのかと思うからです。もちろん私は間違っている可能性があります。

答えて

1

Windowsアプリケーションは、ユーザーの入力を待つことを意図したものではなく、コンソールアプリケーションのパラダイムです。

これを処理するより良い方法は、難易度が設定されるまで他のコントロールを無効(または非表示)にすることです。次のようなものがあります:まず難易度NumericUpDownとスタートボタンのみを表示します。スタートボタンを押すと、残りのコントロールを有効/表示して開始します。

+0

私は間違いなく戻ってコントロールを無効にする必要がありますが、ポーズは私が立ち往生しているものです。だから私がトグル・モル()を呼び出すためのスタート・ボタンを組み込んだ場合、このようなものが行く方法だろうと思いますか?今私はそれについて考える、私はそれに答えることができます...それを試してください..それは動作しない場合は、他の何かを考える。 hehe –

+0

多分あなたはこれを逃した。わからない。しかし、私はメッセージボックスを使用してユーザー入力を受け取ることができることを発見しました。ウワラ!ユーザー入力のために一時停止する勝利アプリ、私は毎日何かを学んでいます。 –

+0

はい、入力のためのモーダルダイアログボックスを表示する別の方法です。 –

関連する問題