| Autor |
Beitrag |
Scofield2011
      
Beiträge: 55
Windows XP, Windows 7, Windows 8
C#, VBA, VB
|
Verfasst: Fr 28.10.11 20:29
Hallo,
ich habe da ein Problem, dass mich rätseln läßt was wohl die Ursache sein könnte.
Ich habe zwei Forms. Auf meinem HauptForm ist zudem ein edit field, welches je nachdem ob das zweite Form geöffnet ist seinen Wert ändert. Diese Wertänderung habe ich durch eine Methode realisiert, die beim Schließen des Forms aufgerufen wird. Außerdem gibt es auf meinem HauptForm einen Button, der ebenfalls das Schließen und damit die Werteänderung des edit fields bewirken soll.
Zu diesem Zweck (anders wollte es partout nicht funktionieren) habe ich das edit field als public static deklariert, da ansonsten immer die folgende Fehlermeldung kam:
"an object reference is required for the non-static field method or property"
Es hat auch alles bestens funktioniert. Aber immer wenn ich in der Design View meines HauptForms etwas hinzufüge oder ändere, wird automatisch das edit field zu "Public" umdeklariert, was dann natürlich wieder obigen Fehler erzeugt.
Außerdem wurde auf dieselbe Weise bereits mehrfach mein HauptForm größenmäßig verändert.
Mein Form ist für eine Auflösung von 1024x768 ausgelegt, aber es wird ständig automatisch auf 1020x740 verkleinert.
Das nervt, wenn man das nach jeder Änderung auf dem Form wieder korriegieren muss.
Ich hoffe jemand weiß Rat und bedanke mich bereits im Voraus für die Hilfe.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 28.10.11 21:01
Ich glaube, es ist sinnvoller, den Fehler zu finden, der ein statisches Feld notwendig macht, das klingt nämlich irgendwie komisch 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
storestore
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Fr 28.10.11 22:19
Hallo,
Poste doch mal bitte deinen Quelltext
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|
Th69
      

Beiträge: 4807
Erhaltene Danke: 1061
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 29.10.11 10:03
Hallo Scofield2011,
die Größe eines Fensters kann nicht größer sein, als die vom Desktop zur Verfügung stehende Größe (ich nehme mal an, du hast eine Auflösung von 1024x768 eingestellt und eine TaskBar mit der Höhe von 28).
Am besten du nimmst diese Einstellung dann dynamisch in deinem Programm vor (damit sich nicht jedesmal die Designerdatei ändert).
Und zu deinem anderen Fehler: editiere niemals (als Anfänger) die Designer-Datei.
Dies ist auch gar nicht nötig, da du sicherlich einen Programmierfehler beim Zugriff auf das Form bzw. Form-Element gemacht hast.
Siehe dazu auch meinen Artikel Kommunikation von 2 Forms, bei dem die typischen Anfängerfehler beim Zugriff auf Forms, sowie die Lösung erklärt wird.
|
|
Scofield2011 
      
Beiträge: 55
Windows XP, Windows 7, Windows 8
C#, VBA, VB
|
Verfasst: So 06.11.11 01:56
Danke noch einmal für eure Hilfe.
Die Kommunikation zwischen meinen beiden Forms klappt jetzt auch ohne statische Elemente.
Aber dafür klappt es an anderer Stelle nicht mehr.
In meinem main Form habe ich eine andere public methode, die Werte in eine listbox hinzufügt. Diese Werte werden beim Laden des Forms aus einer Textdatei in ein statisches array einer public Klasse eingelesen. Vereinfacht kann man sagen, dass es zwei Gruppen von Werten gibt, die einen werden quasi im normalen Zustand angezeigt und die anderen wenn mein zweites Form aktiv ist.
Die Methode übernimmt dabei die Aufgabe je nach Zustand die einen oder die anderen Werte in die listbox zu schreiben, wobei diese natürlich jedes Mal vorher geleert wird.
Innerhalb meines main Forms funktioniert die Methode auch wie gewünscht, aber da die methode nicht statisch ist, was ja nicht geht, da die listbox ebenfalls nicht statisch ist, sonst ändert der Designer das jedes Mal wieder zurück, gibt es Probleme wenn ich die Methode vom zweiten Form aus aufrufen will.
Wenn ich die Methode static mache gibt es Probleme, da die listbox nicht statisch ist und wenn ich eine Instanz von meinem main Form im zweiten Form erzeuge, kann ich die Methode zwar aufrufen, aber der Inhalt der listbox wird nicht geändert.
|
|
Th69
      

Beiträge: 4807
Erhaltene Danke: 1061
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: So 06.11.11 12:03
Hallo Scofield2011,
dafür benötigst du dann eine Referenz auf das MainForm in deiner zweiten Form (wie auch in meinem Artikel beschrieben (letzter Abschnitt unter "1. Neues Form-Objekt erstellen")).
Und wie dort auch steht, ist es besser mit Ereignissen zu arbeiten, damit deine zweite Form nicht direkt Zugriff auf die MainForm erhält.
Wenn du weitere Fragen dazu hast, dann erstelle bitte einen neuen Beitrag (da der Titel ja nicht mehr dazu paßt).
|
|
Scofield2011 
      
Beiträge: 55
Windows XP, Windows 7, Windows 8
C#, VBA, VB
|
Verfasst: So 13.11.11 20:17
Danke klappt jetzt alles bestens und das auch ohne public Elemente.
|
|
|