2016-11-22 3 views
-4

Так что я хочу сделать приложение в Windows Forms Applications или что-то с C#, которое показывает новое случайное число каждый раз, когда я нажимаю enter, но я понятия не имею, как это сделать.Как создать приложение, которое показывает новое случайное число каждый раз, когда вы нажимаете Enter на C#?

В окне консоли я это делаю так:

Boolean keepGoing = true; 
do 
{ 
    Random rand = new Random(); 
    int randomNumber = rand.Next(1, 101); 
    Console.WriteLine(randomNumber); 
    Console.ReadKey(); 
    Console.Clear(); 
} 
while (keepGoing == true); 

Но мне нужно сделать это в приложении, где я могу стиль размер шрифта и прочее.

Я был бы очень признателен, если бы вы, ребята, могли мне помочь!

+2

Читайте о WPF и Windows Forms, если вы хотите настроить. – FCin

ответ

3

Прежде чем что-либо еще, вы хотите объявить Random rand = new Random() вне вашего цикла, в противном случае каждый сгенерированный номер будет таким же.

Для полной поддержки с клавиатуры и т.д., вы бы лучше сделать простое приложение WPF и использовать этот код, чтобы обнаружить, если enter была нажата:

private void input_KeyDown(object sender, KeyEventArgs e) 
{       
    if(e.KeyData == Keys.Enter) 
    { 
     // Run random number generator again 
    }    
} 

Вместо рекурсивно работает метод, вы бы просто прослушайте конкретное событие keyDown (см. выше) и, используя правильный ключ (в этом случае enter), вы снова вызовете NewRandomNumber().

+0

Не могли бы вы пройти через шаги сразу после создания приложения WPF в Visual Studio? Это насколько мне известно о WPF. Мне нужно создать ящик или что-то, что будет выводить мое случайное число, и тогда это поле будет автоматически генерировать метод, о котором вы говорите? Вы не сможете писать в поле, он должен выводить только номер. Я также не знаю, как вывести что-то в WPF. – PinkySmartass

+1

Вы можете связать событие нажатием кнопки или иметь текстовое поле, которое прослушивает события смены ключей. Есть сотни обучающих программ WPF, если у вас есть вопрос с кодировкой, вы можете отправить другой вопрос, чтобы обратиться за советом. Секции комментариев обычно зарезервированы для обсуждения ответа или предоставления более глубокого объяснения. –

2

Перейдите к свойствам формы и установите KeyPreview = true. Объявляется новый случайный экземпляр

Random rdm = new Random(); 

Затем обрабатывать KeyDown Handler так:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if(e.KeyCode==Keys.Enter) 
     { 

      int number = rdm.Next(0, 101); 
      label1.Text = number.ToString(); 

     } 
    } 
+1

Если вы объявите здесь 'rdm', то каждый номер будет таким же. Вам нужно объявить экземпляр «Случайного» один раз, а не каждый раз, когда вам понадобится новый номер. –

+0

работал для меня .. но я написал это как через 2 минуты, но я отредактировал свой ответ. – nicoh

+1

Почти все мои проблемы с использованием 'Random' приходят от объявления его внутри цикла, возможно, он отличается от условного оператора? В любом случае, объявлять его каждый раз в любом случае не нужно :) –

0

Yo следует вынимать создание случайного числа, попробуйте следующее:

Boolean keepGoing = true; 
Random rand = new Random(); 
do 
{ 
    int randomNumber = rand.Next(1, 101); 
    Console.WriteLine(randomNumber); 
    Console.ReadKey(); 
    Console.Clear(); 
} 
while (keepGoing == true); 
Смежные вопросы