2015-02-20 2 views
0

Я пытаюсь сделать этот метод похожим, если вы не нажали правильное значение, появится окно сообщения, и когда вы нажмете на него сообщение, оно вернется, и вы должны попытаться поставить значения жесткости снова и так далее. И если поле пустое или пустое должно дать = 0. Если я нажимаю ex. e2 он должен щенят с коробкой сообщений ??Как проверить действительный ввод C#

попробовали этот без другого, если .. и сообщение не исчезло? пожалуйста, помогите

public int playerOneDart1Value; 
    public int calculateDart1() 
    { 



     if (player == "t1" || player == "T1" || player == "3") 
     { 
      playerOneDart1Value = 3; 
     } 

     else if (player == null) or empty?? 
     { 
      playerOneDart1Value = 0; 
     } 

     else 
     { 
      MessageBox.Show("not valid input"); 
      return calculateDart1(); 


     } 

     return playerOneDart1Value; 
    } 
+0

'IsNullOrEmpty'? –

+0

Да, это статический метод, называемый 'String.IsNullOrEmpty (string)' – ryanyuyu

+1

Кроме того, 'String.IsNullOrWhitespace', если вы хотите, чтобы непустые строки с пробелами считались – Jcl

ответ

2

Вы вызываете return calculateDart1(); прямо после отображения окна сообщения, поэтому у пользователя никогда не будет возможности изменить ввод, прежде чем проверка будет сделана снова и покажет окно сообщения.

2

Вы вызываете функцию calculateDart1 рекурсивно и поэтому причину, по которой MessageBox не исчезнет является то, что MessageBox.Show("not valid input"); вызывается снова и снова.

+0

впереди меня на aprox 3 секунды. Touché;) – Alex

+0

@Drew R Спасибо! это мне очень помогает, новичок в C# :-) –

+0

: p @Alex & you be welcome OP –

1

Вы вызываете calculateDart1() сразу после приглашения MessageBox, что приводит к бесконечному циклу, который не позволяет пользователю вводить новый вход. Для вашего «нулевого или пустого» требования вы можете использовать string.IsNullOrEmpty, который возвращает true, если строка null или пустая.

public int playerOneDart1Value; 
public int calculateDart1() 
{ 
    if (string.IsNullOrEmpty(player)) 
    { 
     playerOneDart1Value = 0; 
    } 
    else if (player == "t1" || player == "T1" || player == "3") 
    { 
     playerOneDart1Value = 3; 
    } 
    else 
    { 
     MessageBox.Show("not valid input"); 
     //you can use something like a negative value to indicate invalid input 
     playerOneDart1Value = -1; 
    } 
    return playerOneDart1Value; 
} 
Смежные вопросы