2016-05-31 11 views
-1

Ich versuche eine Nachricht in textBox2 anzuzeigen, wenn in textBox1 die erste Zeile mit "-" beginnt. Nun funktioniert es, aber wenn ich "-Hello" oder etwas anderes, die mit "-" Programm beginnt eingeben, fügen Sie alle Zeit Nachricht "Bitte verwenden Sie keine anderen Zeichen". Gibt es eine Möglichkeit, es einmal zu senden?C# textBox Nachricht

+0

Anstelle von '+ =' verwenden '='? – CodeCaster

+0

Ich möchte, dass das Programm die Nachricht immer hinzufügt, wenn textbox1 mit "-" beginnt. –

+5

Bitte bearbeiten Sie Ihre Frage so, dass sie Schritt für Schritt enthält, was Sie wollen und was Sie denken "all time" bedeutet. – CodeCaster

Antwort

0

ich nehme an, Sie verwenden textBox2 anzuzeigen mehrere Nachrichten (also verwenden Sie =+ anstelle von =), aber Sie möchten die gleiche Nachricht nicht zweimal anzeigen, wenn der Benutzer noch tippt.

Wenn das der Fall ist, können Sie eine dieser drei Optionen zur Verfügung:

1- Zur Verwendung der Leave Ereignis .. so etwas wie die folgenden:

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

In diesem Fall Die Nachricht wird nur angezeigt, wenn textBox1 den Fokus verliert.


2- Wenn Sie die Meldung angezeigt werden soll, während Sie tippen, aber gleichzeitig angezeigt werden, können Sie etwas tun:

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

Dies wird die Nachricht nicht angezeigt werden wieder bis textBox1 wieder Fokus.


3- Und wenn Sie die Meldung wollen nie wieder angezeigt werden, es sei denn, das (-) entfernt wird und erneut eingegeben haben, dann verwenden Sie nicht die Enter, und Sie können einfach verwenden Sie die folgenden Schritte aus:

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

One letzte Note: Sie wahrscheinlich nicht brauchen \r\n am Anfang und am Ende der Nachricht, können Sie es einfach von der Linie bis zum Ende hinzuzufügen.

Hoffe, dass hilft :)

0

ändern Sie es, um zu validieren, wenn das Textfeld den Fokus verliert, um eine Messagebox mit Ihrer Nachricht zu öffnen, dann geben Sie den Textfeld Fokus wieder. Dadurch wird sichergestellt, dass Benutzer keinen Wert eingeben können, der die Einschränkung nicht erfüllt.

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

verwenden Sie + =, dies fügt jedes Mal eine Fehlerzeichenfolge hinzu, wenn textbox1 Text mit "-" beginnt. Wenn Sie dieses einmal hinzufügen möchten, entfernen Sie + = und fügen nur hinzu =

0

Sie verketten Ihre Fehlermeldung zum Inhalt Ihrer Textbox jedes Mal über den Operator +=, aber Sie müssen tatsächlich nur auf diesen Wert setzen unter Verwendung des = Betreiber:

// 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 = ""; 
} 

Wenn Sie einen kürzeren Ansatzes bevorzugt, würde das folgende tut das gleiche:

// 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" : "";