2016-05-31 3 views
-1

Я пытаюсь показать сообщение в textBox2, если в строке textBox1 первая строка начинается с "-". Ну, это работает, но если я нахожу «-Hello» или что-то еще, которое начинается с «-» программы, добавьте все сообщение времени «Пожалуйста, не используйте другие символы». Есть ли способ отправить его один раз?C# textBox Сообщение

if(textBox1.Text.StartsWith("-")) 
{ 
    textBox2.Text += "\r\n Please do not use other characters \r\n"; 
} 
+0

Вместо '+ =' use '='? – CodeCaster

+0

Я хочу, чтобы программа добавляла сообщение все время, когда textbox1 начинается с «-» –

+5

Пожалуйста, отредактируйте свой вопрос, чтобы он содержал поэтапно то, что вы хотите, и что вы думаете «все время». – CodeCaster

ответ

0

Я предполагаю, что вы используете textBox2 для отображения несколько сообщений (поэтому вы используете =+ вместо =), но вы не хотите отображать одно и то же сообщение дважды, если пользователь все еще печатает.

Если это так, то вы можете использовать любой из этих 3-х вариантов:

1- Чтобы использовать Leave событие .. что-то вроде следующего:

private void textBox1_Leave(object sender, EventArgs e) 
    { 
     if (textBox1.Text.StartsWith("-")) 
     { 
      textBox2.Text += "\r\n Please do not use other characters \r\n"; 
     } 
    } 

В этом случае, сообщение будет отображаться только тогда, когда textBox1 теряет фокус.


2- Если вы хотите, чтобы отобразить сообщение во время набора текста, но будет отображаться один раз, вы могли бы сделать что-то вроде этого:

bool Alerted; 
    private void textBox1_Enter(object sender, EventArgs e) 
    { 
     Alerted = false; 
    } 
    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     if (Alerted) { return; } 
     if (textBox1.Text.StartsWith("-")) 
     { 
      Alerted = true; 
      textBox2.Text += "\r\n Please do not use other characters \r\n"; 
     } 
    } 

Это не будет отображать сообщение снова до textBox1 восстанавливает фокус.


3- И если вы хотите, чтобы сообщение никогда не будет отображаться снова, если (-) не удаляется и напечатал еще раз, то не используйте Enter, и вы можете просто использовать следующее:

bool Alerted; 
    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     if (textBox1.Text.StartsWith("-")) 
     { 
      if (Alerted) { return; } 
      Alerted = true; 
      textBox2.Text += "\r\n Please do not use other characters \r\n"; 
     } 
     else 
     { 
      Alerted = false; 
     } 
    } 

Один последнее замечание: вы, наверное, не нужно \r\n в начале и в конце сообщения, вы можете просто добавить его в конец строки.

Надеюсь, что поможет :)

0

изменить его, чтобы проверить, когда текстовое поле теряет фокус, чтобы открыть сообщение с вашим сообщением, а затем снова отправьте текстовое поле. это гарантирует, что пользователи не смогут ввести значение, которое не соответствует ограничению.

0
if(textBox1.Text.StartsWith("-")) 
{ 
    textBox2.Text = "\r\n Please do not use other characters \r\n"; 
} 
else 
    textBox2.Text = ""; 

Вы используете + =, это добавляет каждый раз строку ошибки, если текст textbox1 начинается с "-". Если вы хотите добавить это один раз, удалите + = и добавьте только =

0

Вы в настоящее время связываете свое сообщение об ошибке с содержимым вашего текстового поля каждый раз с помощью оператора +=, однако вам действительно нужно просто установить его на это значение вместо с помощью = оператора:

// If your TextBox starts with "-" 
if(textBox1.Text.StartsWith("-")) 
{ 
    // Set your textbox to the error message 
    textBox2.Text = "\r\n Please do not use other characters \r\n"; 
} 
else 
{ 
    // Otherwise, there isn't a problem (remove any error messages) 
    textBox2.Text = ""; 
} 

Если вы предпочли более короткий подход, следующий будет делать то же самое:

// This will handle all of your logic in a single line 
textBox2.Text = textBox1.Text.StartsWith("-") ? "\r\n Please do not use other characters \r\n" : "";