2016-06-26 15 views
0

Zuerst aller Entschuldigung für mein schlechtes Englisch. Ich bin Anfänger bei C# und ich habe eine Windows Forms-Anwendung, aber ich kann nicht eine Schaltfläche deaktivieren, wenn ein Textfeld leer ist. Ich habe einige der aktivierten Methoden ausprobiert, aber sie haben nicht funktioniert. Hoffe jemand kann mir helfen, das zu beheben. Vielen DankWie man Knopf abstellt, wenn Textkasten leer ist

public partial class ModulusForm : Form 
{ 
    public double nje; 
    public double dy; 
    public double pergjigja; 
    public double rezultati; 
    public ModulusForm() 
    { 

     InitializeComponent(); 
     Button btn = new Button(); 
     btn.Click += new EventHandler(butoniGjenero_Click); 
    } 
    private void butoniPerfundo_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 
    private void butoniGjenero_Click(object sender, EventArgs e) 
    { 
     Random random = new Random(); 
     nje = random.Next(1, 100); 
     dy = random.Next(1, 100); 
     if (nje > dy) 
     { textboxPyetja.Text = "X = " + nje + " " + "dhe" + " " + "Y = " + dy; } 
     else if (nje > dy) 
     { 
      nje = random.Next(1, 100); 
      dy = random.Next(1, 100); 
     } 
     rezultati = nje/dy; 
    } 
    private void butoniPastro_Click(object sender, EventArgs e) 
    { 
      textboxPyetja.Clear(); 
      textboxPergjigja.Clear(); 
      textboxPergjigjaSakt.Clear(); 
    } 
    private void butoniVerteto_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      pergjigja = double.Parse(textboxPergjigja.Text); 
     } 
     catch 
     { 
      var informim = MessageBox.Show("Rishiko fushat!", "Verejtje", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     } 
     if (textboxPergjigja.Text == "") 
     { 
      //nothin' baby 
     } 
     else 
     { 
      if (textboxPyetja.Text == "") 
      { 
       var informim = MessageBox.Show("Fusha e pyetjes eshte null!", "Verejtje", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      } 
      else 
      { 
       if (pergjigja == rezultati) 
       { 
        textboxPergjigjaSakt.Text = "Pergjigja eshte e sakte"; 
       } 
       else 
       { 
        textboxPergjigjaSakt.Text = "Gabim." + " " + "Pergjigja e sakte eshte: " + "" + rezultati; 
       } 
       comboboxVargu.Items.Add(nje + "/" + dy + " = " + rezultati); 
      } 
     } 
    } 
} 

}

+2

Behandeln Sie das "TextChanged" -Ereignis des Textfeldes. Überprüfen Sie in diesem Ereignishandler, ob die Text-Eigenschaft des Textfelds eine leere Zeichenfolge ist. Wenn es leer ist, deaktivieren Sie die Schaltfläche: 'myButton.Enabled =! TextBox.Text.IsNullOrEmpty();' –

+0

Der elegante Weg, um mit dieser Art von Sache umzugehen, ist ein Event-Handler an das Application.Idle-Ereignis anzuhängen und alle Status-Updates durchzuführen Du brauchst drinnen. Angenommen, Sie verwenden WinForms. –

Antwort

1

Versuchen Sie folgendes:

if (String.IsNullOrEmpty(textboxPergjigja.Text)) 
    butoniVerteto.Enabled = false; 
else 
    butoniVerteto.Enabled = true; 
+0

Ich habe es gerade versucht, es ist die Schaltfläche deaktivieren. Wenn die Textbox nicht leer ist, ändert sich die Schaltfläche nicht, sie bleibt deaktiviert. – Dren

+0

@Dren Wo hast du das platziert, wenn? –

+0

butoniVerteto_Click – Dren

3

Credit @Cody Grau für bereits darauf hindeutet, dies; Ich habe es gerade erweitert, so können Sie sehen, wie zu implementieren und wie es funktioniert

Übersicht
Sie können für einen Event-Handler verdrahten, wenn Ihr textboxPergjigja.Text ‚s Text geändert hat.

In der Prozedur, die Sie erstellen, können Sie dann auswerten, ob Ihre Schaltfläche Enabled oder nicht sein soll - verwenden Sie die string.IsNullOrWhiteSpace() Prüfung, um dies festzulegen.

Erstens:
In Ihrem Konstruktor für das Formular, abonnieren Sie das textboxPergjigja.TextTextChanged Veranstaltung Textfeld ein.

So:

public ModulusForm() 
{ 
    InitializeComponent(); 
    Button btn = new Button(); 
    btn.Click += new EventHandler(butoniGjenero_Click); 

    // Add the subscription to the event: 
    textboxPergjigja.TextChanged += textboxPergjigja_TextChanged; 
} 

Next:
einen Handler hinzufügen, die für dieses Ereignis des richtigen Delegaten Signatur übereinstimmt.

So:

public textboxPergjigja_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    // If the text box is not "empty", it will be enabled; 
    // If the text is "empty", it will be disabled. 
    butoniVerteto.Enabled = !string.IsNullOrWhiteSpace(textBoxPergjigja.Text);    
} 

Auf diese Weise, wenn der Text in dem textBoxPergjigja Textfeld geändert wird; Die Auswertung wird ausgeführt und Ihre Schaltfläche wird immer korrekt aktiviert/deaktiviert.

Hoffe, das hilft! :)

Zusätzliche Informationen
können Sie auch textBox.Text.IsNullOrEmpty() verwenden, und es wird immer noch funktionieren - wie von @Cody vorgeschlagen

I string.IsNullOrWhiteSpace() verwendet haben, im Gegensatz zu textBox.Text.IsNullOrEmpty() aus den folgenden Gründen:

  • die .IsNullOrEmpty() Methode nur prüft, ob die textBox.Text entweder null oder die Gesamtmenge der Zeichen gleich 0.

Das Problem dieser Haltung könnte, ist, wenn der Benutzer nur einen Raum, in dem Textfeld eintritt, ist es nicht mehr Empty oder null; Daher wird diese Überprüfung true zurückgeben.Wenn die Logik des Programms erfordert, dass ein tatsächlicher Wert in das Textfeld eingegeben wird, kann diese Logik fehlerhaft sein.

  • Auf der anderen Seite: Die string.IsNullOrWhiteSpace() Prüfung auf 3 Bedingungen prüfen wird - wenn der Eingang stringnull ist, Emptyund enthalten nur Leerzeichen (Leerzeichen, Zeilenvorschub etc.), auch.

Ich hoffe, dass dies ein wenig zusätzlichen Flaum gibt, um Ihnen eine fundierte Entscheidung für die Zukunft zu geben.

0

fügen Sie ein Ereignis zum Bearbeiten von Text in der Txtbox hinzu. Wenn sich der Text ändert, aktivieren Sie die Schaltfläche

2

Ich hoffe, es funktioniert!

private void YourTextBox_TextChanged(object sender, EventArgs e) 
{ 
    if (String.IsNullOrEmpty(YourTextBox.Text)) 
     YourButton.Enabled = false; 
    else 
     YourButton.Enabled = true; 
} 
1

Behandeln Sie es auf TextChanged Ereignis Ihrer TextBox. (Doppelklicken Sie auf Ihr Textbox-Steuerelement, wenn Sie es entworfen haben, wodurch automatisch das Ereignis "Textänderung" für Sie erstellt wird).

private void textboxPyetja_OnTextChanged(..blah blah) 
{ 
    if(String.IsNullOrWhitespace(txtTargetTextbox.Text) 
    { 
     //disable your control 
    } 
    else 
    { 
     //enable your control 
    } 
} 
Verwandte Themen