Entwickler-Ecke
WinForms - Windows Form plätzlich leer!!!!
naeschd - Do 04.03.10 00:14
Titel: Windows Form plätzlich leer!!!!
Hallo ich habe ein großes Problem....
Ich mache mein Projekt auf und mein Form (der Entwurf) ist auf einmal leer!!!! Wie wenn ich ein neues Projekt anfangen würde. Der Code usw. ist aber alles noch da und Fehler treten auch keine auf, nur dass ich mein Form keine Inhalte hat...
Habe nichts am Code geändert was dies hätte vorrufen können. Habt ihr eine Idee wie ich das wieder in den Griff bekomme? Wäre euch sehr denkbar!
Matze
Kha - Do 04.03.10 00:52
Was steht denn in der .designer.cs, ist die auch noch vorhanden?
danielf - Do 04.03.10 09:28
Hallo,
hast du vlt. den Constructor geändert? Dort muss bei einer Form die Funktion InitializeComponent aufgerufen werden, ansonsten werden die Controls nicht geladen.
Gruß Daniel
naeschd - Do 04.03.10 09:51
Nein ich habe den Constructor nicht geändert...
Hier mal der Constructor... (cs, 44.76 KB)
Hab ziemlich viel drin... Weiß nicht obs weiterhilft. Aber sollte doch eigentlich passen oder?
Moderiert von
Christian S.: 800 Zeilen Quelltext als Anhang eingefügt
JüTho - Do 04.03.10 09:56
Das, was du zitiert hast, ist nicht der Konstruktor. Der steht in MyForm.cs und sieht als Minimalversion so aus:
C#-Quelltext
1: 2: 3: 4:
| public MyForm() { InitializeComponent(); } |
Darauf bezog sich Daniel. Jürgen
naeschd - Do 04.03.10 09:58
ok... Hab ihn. So sieht er aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| public Hauptfenster() { CheckForIllegalCrossThreadCalls = false; InitializeComponent(); InitializeControlValues(); EnableControls(); comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
FensterCal = new frmCalibration(); FensterCal.Show(); FensterCal.Visible = false; } |
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
JüTho - Do 04.03.10 10:07
Das bedeutet, du erzeugst vom Hauptfenster aus ein weiteres Fenster und zeigst das sofort an? Das nehme ich nach der Variablen FensterCal an.
Nimm das mal raus und verlagere es nach Form.Load oder Form.Shown. Der Designer benutzt zum Aufbau genau denselben Code wie du zur Verarbeitung. Es ist denkbar, dass er durch das zweite Fenster völlig durcheinandergebracht wird.
Die anderen Maßnahmen beeinflussen zwar auch die Gestaltung des Formulars, aber das sind vermutlich alles zulässige Verfahren.
Gruß Jürgen
PS. Bezeichner wie Label23 oder PictureBox_123 gehören verboten, siehe
.NET Richtlinien für Namen [
http://msdn.microsoft.com/de-de/library/ms229002%28VS.80%29.aspx].
naeschd - Do 04.03.10 10:10
Habs rausgenommen (war eigentlich noch ein alter Codeschnippsel)... Leider keine Änderung! Hat ja davor aber auch mit dem Codeschnippsel schon funktioniert...
danielf - Do 04.03.10 10:53
Wenn du auf die Methode InitalizeComponent gehst und F12 drückst, kommst du zu deren Implementierung.
Schau mal ob das funktioniert und es dort "gut" aussieht.
naeschd - Do 04.03.10 10:57
Dann komme ich genau dahin was im 4. Post steht... Ob das gut oder schlecht aussieht kann ich leider nicht beurteilen. Dazu bin ich no zu sehr Laie (leider)...
danielf - Do 04.03.10 11:16
Okay, das sieht "gut" aus. Dann sind die Bedingungen soweit in Ordnung. Im Designer siehst du die Element noch? Erst zur Ausführung nicht mehr? Korrekt?
naeschd - Do 04.03.10 11:19
Also ich sehe schon im Entwurf (also bei der Registerkarte "Hauptfenster.cs [Entwurf]") nix mehr... Und auch wenn ich das Programm ausführe auch nicht. Das heißt ich kann meine Steuerelemente während des Programmierens (wenn das Programm nicht läuft) nicht sehen! Da sieht die Windowsoberfläche so aus, als währe ein neues Projekt gerade begonnen worden...
Thx für deine Hilfe!
danielf - Do 04.03.10 11:30
Kannst du mal probeweise deinen Konstruktor wie folgt reduzieren und schauen ob es dann funktioniert...
C#-Quelltext
1: 2: 3: 4:
| public Hauptfenster() { InitializeComponent(); } |
naeschd - Do 04.03.10 11:32
Muss dich leider enttäuschen... Bleibt alles unverändert... :-(
JüTho - Do 04.03.10 13:09
Solche Zeilen fehlen:
C#-Quelltext
1:
| this.Controls.Add(...); |
Erst dadurch werden die ganzen Controls dem Fenster zugeordnet. Das musst du handschriftlich hinzufügen für alle Controls der obersten Ebene (Panels, ToolStrip u.ä.).
Ich habe jetzt nicht kontrolliert, ob die entsprechenden Anweisungen für alle Panels usw. vorhanden sind; aber diese fehlen jedenfalls nicht immer.
Wie diese Anweisungen verschwinden können, ist mir freilich schleierhaft. Ich könnte mir allenfalls vorstellen, dass verschiedene Controls aus einem Control in ein anderes verschoben werden sollte und dadurch nicht an der richtigen Stelle landeten.
Gruß Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!