Frage

Ich habe dieses kleine Programm beim Lesen Head First C # . Ich versuche, das Programm zu pausieren erhalten für den Benutzer NumericUpDown Steuerung für den Schwierigkeitsgrad einzustellen. Hier ist der Code ...

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;
        }

Der Rest der Schaltfläche Handler wurde weggelassen Post zu verkürzen. Ich habe auch geschrieben nicht die Maulwurf Klasse, weil ich die Form denken ist, wo meine Pause Anweisung gehen sollte. Natürlich könnte ich falsch sein.

War es hilfreich?

Lösung

Windows-Anwendungen sind nicht auf Pause warten auf Benutzereingabe konzipiert - das eine Konsolenanwendung Paradigma ist.

Eine bessere Möglichkeit, dies zu umgehen ist zu deaktivieren (oder ausblenden) andere Kontrollen, bis die Schwierigkeit eingestellt wurde. Etwas wie: zeigt zunächst nur schwer NumericUpDown und einen Startknopf. Sobald der Startknopf gedrückt wurde aktivieren / zeigen die restlichen Kontrollen und beginnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top