Autor Beitrag
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 23.02.17 16:46 
Hallo ihr Experten,
ich habe ein Problemchen. Der Benutzer soll einen Pfad angeben, anschließend ermittelt das Programm alle Dateien und erstellt pro Datei eine TabPage:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
private void Test() {
                foreach (var file in files)
                {
                    CreateTabPage(file);
                }
}
private void CreateTabPage(string file)
        {
            try
            {
                TabPage tabPage = new TabPage(Path.GetFileName(file));
                RichTextBox richTextBox1 = new RichTextBox();
                using(var file = new StreamReader(file))
                {
                    richTextBox1.Text = file.ReadToEbd();
                    file.Close();
                }
                tabPage.Controls.Add(richTextBox1);
                this.tabControl1.TabPages.Add(tabPage);
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message, "Hier");
            }
        }


In dem Projektpfad habe ich ca 10 Dateien, anhand von MessageBoxen habe ich ermittelt, dass die Schleife 10 mal durchlaufen wird, die Methode aber nur einmal aufgrufen wird. Woran kann das liegen?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.02.17 17:17 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 23.02.17 17:40 
Oh hupps, ich habe den Quelltext nicht kopiert. Der StreamReader hat einen anderen Variablennamen als file

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 23.02.17 17:49 
Zitat:
Oh hupps, ich habe den Quelltext nicht kopiert.


Wenn du hilfe möchtest solltest du das aber noch tun.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 23.02.17 18:00 
Ok, sorry

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
private void CreateScintillaToTabControl(string file)
        {
            try
            {
                TabPage tabPage = new TabPage(Path.GetFileName(file));

                // Scintilla Instanzieren und Grundeinstellungen anpassen
                Scintilla scintilla = new Scintilla();

                using (StreamReader reader = new StreamReader(file))
                {
                    scintilla.Text = reader.ReadToEnd();
                    reader.Close();
                }

                tabPage.Controls.Add(scintilla);
                this.tabControl1.TabPages.Add(tabPage);

                MessageBox.Show("A");
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message, "Hier");
            }
        }


Und diese Methode wird in der Schleife gefeuert, aber bei 10 Einträgen, wird die Methode nur einmal ausgeführt

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 23.02.17 18:15 
Du has das debugged, gesehen das er durch die Schleife geht, aber nicht in die Methode springt?
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 23.02.17 18:25 
Genau

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 23.02.17 18:29 
Ehrlich gesagt glaube ich das nicht.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 23.02.17 18:32 
Naja ich habe in die Schleife eine MessageBox eingebaut. Die kam 10 Mal. Dann habe ich in die Methode eine MessageBox eingebaut, die kam aber nur ein mal. Dann habe ich das Projekt gedebugt (Debuggen -> Einzelschritt), dann hat er mir alle Zeilen in dem Designer markiert, bis dann das Programm startete, und ab dann konnte ich den Code nicht mehr sehen. Ich habe aber auch in der Ausgabe geguckt, da kamen auch keine Fehler

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 23.02.17 19:04 
Setze einen Breakpoint auf die Zeile mit dem CreateScintillaToTabControl Methodenaufruf in der Schleife. Drücke in Visual Studio F5 und klickt dich durch deine Anwendung bis du an diesen Breakpoint stößt. Jetzt klick F11 (F11 heißt geh in diese Methode). Der Debugger sollte in deine CreateScintillaToTabControl Methode wechseln, jetzt klicke wieder F5. Damit sollte der Code weiterlaufen bis du wieder auf deinem Breakpoint landest. Nun wieder F11 klicken und schauen ob du in der Methode landest.

Wenn du nicht 2mal in der Methode landest hätte ich dafür gern ein kompilierbares Beispiel Project mit dem Verhalten als Anhang zum selber überprüfen. Wenn du zum 2.ten mal in der Methode landest drücke F10 für Einzelschrittausführung, schaue dir an was passiert und wiedererhole die F10 Einzelschritte bis was passiert das nicht deinen Erwartungen entspricht schau in die beteiligetn Variablen was da drin steht vergleiche es mit deinen Erwartungen und schließe deine Schlüsse daraus.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.02.17 22:33 
- Nachträglich durch die Entwickler-Ecke gelöscht -