2016-11-24 9 views
-1

Ich arbeite in diesem Programm fast wie für 7 Stunden, aber ich weiß nicht, wo ich falsch mache, wenn Sie mir helfen könnten, ich schätze es wirklich. Das Programm akzeptiert die selbe ID nicht zweimal. Mein Problem ist, dass wenn ich eine Kurator-ID eingebe, nenne und speichere sie. Wenn ich die gleiche ID erneut eingebe, wird es gespeichert und es wird "Kurator ID gespeichert Danke"Wie speichert man eine ID in der Datei nur einmal?

private void SaveCuratorBtn_Click(object sender, RoutedEventArgs e) 
    { 



     curator Curator = new curator(); 

     try 
     { 
      Curator.ID = CuratorIDbox.Text; 
      bool sameid = false; 
      for (int i = 0; i < curatorlist.Count; i++) 
      { 
       if (curatorlist[i].ID == Curator.ID) 
       { 
        sameid = true; 
        break; 
       } 
      } 
      if (sameid) 
       MessageBox.Show("ID already exist please try again !"); 
      else 
      { 
       if (string.IsNullOrEmpty(CuratorIDbox.Text) || string.IsNullOrEmpty(CuratorNamebox.Text)) 
        MessageBox.Show("please do not leave Boxes empty!"); 
       else 
       { 


        curatorlist.add(Curator); 
        savefile(); 
       } 
      } 



     } 


     catch (Exception error) 
     { 
      MessageBox.Show(error.Message); 
     } 
     try 
     { 

      Curator.NAME = CuratorNamebox.Text; 
      MessageBox.Show("Curator Saved Thank You"); 
      savefile(); 
      CuratorIDbox.Text = ""; 
      CuratorNamebox.Text = ""; 

     } 

     catch (Exception error) 
     { 
      MessageBox.Show(error.Message); 
     } 
    } 
+1

Es ist schwer zu sagen, ohne Debugging. Ich sehe nichts falsches mit der Logik außer der ganzen Sache, die in einem Versuch/Fang lebt. Sie sollten nur versuchen, etwas einzufangen, von dem bekannt ist, dass es eine Ausnahme auslöst. –

+0

Haben Sie den Inhalt der Kuratorliste beim Einstieg in die Methode überprüft? – PaulF

+0

Meine Vermutung ist, dass die Kuratorliste leer ist. – SteppingRazor

Antwort

1

ohne Debuggen, ich würde der Code wie folgt Refactoring:

private void SaveCuratorBtn_Click(object sender, RoutedEventArgs e) 
{ 
    if (string.IsNullOrEmpty(CuratorIDbox.Text) || string.IsNullOrEmpty(CuratorNamebox.Text)) 
    { 
     MessageBox.Show("please do not leave Boxes empty!"); 
     return; // If one of the textboxes is empty, we don't continue executing the method 
    } 

    curator Curator = new curator(); 
    Curator.ID = CuratorIDbox.Text; 
    bool sameid = false; 

    for (int i = 0; i < curatorlist.Count; i++) 
    { 
     if (curatorlist[i].ID == Curator.ID) 
     { 
      sameid = true; 
      break; 
     } 
    } 

    if (sameid) 
    { 
     MessageBox.Show("ID already exist please try again !"); 
     return; 
    } 
    else 
    { 
     Curator.NAME = CuratorNamebox.Text; 

     // I suppose your savefile method can throw exceptions... this has to be in a try-catch block then 
     try 
     { 
      savefile(); 
     } 
     catch (Exception error) 
     { 
      MessageBox.Show(error.Message); 
      return; 
     } 

     MessageBox.Show("Curator Saved Thank You"); 
     CuratorIDbox.Text = ""; 
     CuratorNamebox.Text = ""; 
    } 
} 

Ein Vorschlag:

if (curatorlist.Any(c => c == Curator.ID)) { ... } else { ... } 
:
für bereits bestehende Kuratoren prüfen ich die folgende Zeile verwenden würde

(Sie können Ihre for-Schleife mit diesem austauschen)

+0

gerade reparierte es Mann Danke für das Nehmen sich Ihre Zeit, meine Frage zu beantworten – Shahzada

Verwandte Themen