Benutzer mit den meisten Antworten
Führt eine Anzahl von mehr als 10 Forms zu Problemen?

Frage
-
.. erstelle mit VB 2008 Express Projekte mit mehr als 10 Forms und habe wiederholt beim debuggen Fehlermelsung, da Form1 und Form10 kollidieren!
Die Fehlermeldung sind komisch und dann nicht sauber zu Ändern, sondern es treten weiterhin komische Fehler auf.
Beispielsweise wird da angezeigt, das New in der Deklaration Dim... nicht in Ordnung ist, welche aber sauber ist.
Beim Vermeiden von Form10 treten die Fehler nicht auf. Muss man die Anzahl der Forms , eventuell gleichzeitig geöffneter einstellen?
- Bearbeitet Dr. Bartzack Mittwoch, 5. Januar 2011 08:05 Angabe vergessen
Antworten
-
Hallo Harald,
das Problem ist ein fehlende Erzeugung der Klasseninstanz, in etwa:
Dim formular10 As New Form10
Wenn Du Deinen Formularen einen "anständigen" Namen gibst, wie z. B. KundeFormular, ArtikelFormular,
so ist das mit dem Übertragen noch weniger ein Problem.
Wobei die bessere Lösung im allgemeinen ist, dafür Klassenbibliotheken zu verwenden,
z. B. in Form einer Windows Forms-SteuerelementbibliothekUnd eine Hardcopy muss (sollte) nicht sein.
Die Fehlermeldung kann man direkt aus der Fehlerliste (STRG+C, Kontextmenü) kopieren und einfügen.Gruß Elmar
- Als Antwort markiert Robert Breitenhofer Freitag, 28. Januar 2011 13:33
-
Hallo Harald,
die beiden Anweisungen:
Dim f3 As Form3 = New Form3() Dim f3 As New Form3()
sind von der Funktionalität identisch.
Üblicherweise verwendet man die zweite Form.
Zum einen ist es kürzer, zum anderen eine Quelle weniger für Fehler.Solange Du eine der beiden Varianten verwendest, ist also alles in Ordnung.
Ärger (und die angeführte Ausnahme) gibt es erst, wenn Du schreibst:Dim f3 As Form3 f3.Show()
denn dann ist f3 Nothing und enthält keine Formularinstanz (=> Objektverweis).
Gruß Elmar
- Als Antwort markiert Robert Breitenhofer Freitag, 28. Januar 2011 13:33
Alle Antworten
-
Hallo,
die Anzahl der Formulare oder anderer Klassen spielt beim Debuggen keine Rolle.
Die präzise Fehlermeldung wäre hilfreich, um den Fehlerverursacher zu bestimmen.
Eine reine Vermutung:
Da Form01 und Form10 sich in der Schreibweise sehr ähneln, könnte ein Zahlendreher vorliegen.Um so etwas zu vermeiden, gebe den Formularen aussagekräftigere Namen,
eine fortlaufende Nummerierung ist weder Pflicht noch sinnvoll.Gruß Elmar
-
Hallo,
.. erstelle mit VB 2008 Express Projekte mit mehr als 10 Forms
... was keineswegs ungewöhnlich ist.
und habe wiederholt beim debuggen Fehlermelsung,
Und was sind das für Fehlermeldungen, konkret: Fehlertext?
da Form1 und Form10 kollidieren!
Was heisst "Form1 und Form10 kollidieren"?
Die Fehlermeldung sind komisch
Ohne den konkreten Fehlertext zu kennen, lässt sich
leider nicht erkennen, ob und was an diesen Fehlermeldungen
"komisch" ist.und dann nicht sauber zu Ändern,
Was willst Du wie an einer Fehlermeldung ändern?
sondern es treten weiterhin komische Fehler auf.
Auch hier müsste man zum Beurteilen der enthaltenen
Komik den konkreten Fehlertext kennen.Beispielsweise wird da angezeigt, das New in der
Deklaration Dim... nicht in Ordnung ist, welche aber sauber ist.Würdest Du die kompl. Deklaration sowie den tatsächlichen
Fehlertext hier zeigen, könnte man evtl. eher erkennen, ob
und was an Deiner Deklaration faul ist.Beim Vermeiden von Form10 treten die Fehler nicht auf.
Das könnte z.B. darauf hinweisen, dass es in Deinen Forms
sich überschneidende Deklarationen gibt.
Hast Du bei Deinen ProjekteigenschaftenOption Explicit
und
Option Stricteingeschaltet?
Wenn nicht, solltest Du das unbedingt tun.Muss man die Anzahl der Forms , eventuell gleichzeitig
geöffneter einstellen?Diesen Satz verstehe ich nicht.
Was meinst Du mit "gleichzeitig geöffneter einstellen"?Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
Hallo,
wir können bei dieser Beschreibung nur raten, was aber keinen Sinn macht.
Die Frage "Führt ein Anzahl von mehr als 10 Form zu Problemen?" kann jedoch zweifelsfrei beantwortet werden.Nein.
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 Express -
herzlichen dank für die Antwort. Das mache ich oft, aber wenn man in ein neues projekt vorhandene forms übernimmt, ist es mit nummern günstiger. wenn ich die form10 vermeide, bsp mit form12 weitermache, kommt es nicht zu "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
mfg harald
-
Vielen Dank für die Rückantwort.
Von der Fehlermeldung beim start der *.exe habe ich eine Hardcopy gemacht. Diese geht hier nicht rein?
Deshalb genauer beschrieben: Ein Projekt startet mit Form1, beinhaltet dann auch noch Form10 und mehr.
Da ich die Forms Hinzufüge aus anderen Projekten kommt die überschneidende Deklaration bestimmt vor.
Aber, bis zum Form10, besser im Form10, kommt es beim Debuggen, dort merke ich es zuerst, zur Fehlermeldung.
Die gleichzeitig geöffneten Forms verstehe ich beim Debuggen aus den jeweiligen Projektzustand heraus, nicht erst nach schliessen
und start der *.exe. Dort erscheint z.Bsp. Projektstart Form1, daraus mittels Button z.Bsp. auf Form3, es erscheint
transparent Form10 und die Fehlermeldung:Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Beim debuggen erfolgt an dieser Stelle die "komischen Fehlermeldungen".
kann man hier eine hardcopy (Excel) einbringen?
mfg Harald
-
Hallo Harald,
Von der Fehlermeldung beim start der *.exe habe ich eine
Hardcopy gemacht.Was genau hast Du gemacht?
Was meinst Du mit "Hardcopy"?Diese geht hier nicht rein?
Warum sollte Deine konkrete Fehlermeldung
"hier nicht reingehen"?
Ohne eine solche ist eine sinnvolle Hilfestellung
nicht möglich.Deshalb genauer beschrieben: Ein Projekt startet
mit Form1, beinhaltet dann auch noch Form10 und
mehr.
Da ich die Forms Hinzufüge aus anderen Projekten
kommt die überschneidende Deklaration bestimmt vor.Welche womit überschneidende Deklaration?
Aber, bis zum Form10, besser im Form10, kommt es
beim Debuggen, dort merke ich es zuerst, zur Fehlermeldung.Und eben diese Fehlermeldung (vollst. Fehlertext)
solltest Du eben hier mal zeigen.Die gleichzeitig geöffneten Forms verstehe ich beim
Debuggen aus den jeweiligen Projektzustand heraus,
nicht erst nach schliessen und start der *.exe.Sorry, den vorstehenden Satz verstehe ich nicht.
Dort erscheint z.Bsp. Projektstart Form1,
Wo erscheint "Projektstart Form1"?
daraus mittels Button z.Bsp. auf Form3, es erscheint
transparent Form10Auch diesen Satz verstehe ich nicht wirklich.
und die Fehlermeldung:Der Objektverweis wurde nicht
auf eine Objektinstanz festgelegt.Und welche Objektvariable hat nun den Wert Nothing,
ist also (noch) nicht auf eine Objektinstanz festgelegt?Beim debuggen erfolgt an dieser Stelle die "komischen
Fehlermeldungen".Jetzt sind es offenbar schon mehrere Fehlermeldungen?
Und wie genau lauten diese Fehlermeldungen?kann man hier eine hardcopy (Excel) einbringen?
Ich denke es geht hier um ein VB.net - Programm?
Was hat das mit Excel zu tun?Ehrlich gesagt verstehe ich jetzt noch weniger als
zuvor.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
Hallo Harald,
das Problem ist ein fehlende Erzeugung der Klasseninstanz, in etwa:
Dim formular10 As New Form10
Wenn Du Deinen Formularen einen "anständigen" Namen gibst, wie z. B. KundeFormular, ArtikelFormular,
so ist das mit dem Übertragen noch weniger ein Problem.
Wobei die bessere Lösung im allgemeinen ist, dafür Klassenbibliotheken zu verwenden,
z. B. in Form einer Windows Forms-SteuerelementbibliothekUnd eine Hardcopy muss (sollte) nicht sein.
Die Fehlermeldung kann man direkt aus der Fehlerliste (STRG+C, Kontextmenü) kopieren und einfügen.Gruß Elmar
- Als Antwort markiert Robert Breitenhofer Freitag, 28. Januar 2011 13:33
-
Das mit den Screenshot oder Hardcopy ist ein spezielles Thema.
Hier verbirgt sich ein gesonderter Thread der sich u.a. damit befasst. Besonders nahelegen möchte ich den dritten Beitrag von Robert Breitenhofer, der den einfachsten Weg des an sich etwas komplizierten Procedere beschreibt. Aber auch hier ist Vorsicht geboten. Der beschriebene Weg funktioniert bei Microsoft Internet Explorer! Mit Firefox geht es nicht. Andere Browser habe ich nicht getestet.
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 Express -
hallo, da habe ich eine Unsicherheit gemerkt.
Meine Aufrufe einer neuen Form_seite ist
' Nutzungsteil
Dim f3 As Form3 = New Form3()
f3.Show()Wenn ich die vorstehenden zeilen verstehe, meinst du, dass man
nach ..As diesen teil>Form3=< weglassen kann?
mfg
Harald
-
hallo Peter,
da drücke ich mich nicht sehr genau aus.
Hardcopy meine ich über Taste Druck und Einfügen in Excel.Lässt sich für mich leichter die Desktop- Darstellung mit der Fehlermeldung
als File ablegen und speichern.
Da ich nun weis, dass man auch Kopieren und Einfügen hier machen kann, wird es einfacher.
Eventuell habe ich mir die Programmierung unter VB zu einfach gemacht.
Beginnend mit Form1 und mittels Button und dort den Aufruf
' Nutzungsteil
Dim f3 As Form3 = New Form3()
f3.Show()fahre ich fort. Daneben aber auch auf Form1 weitere Button´s mit Aufrufen derer Art.
Auf diesen Form´s mache ich dito weiter, indem ich z.Bsp. auf Form3 einen Button habe,
der in der Art des obigen Aufrufes eine Form10 aufruft.
also Dim f10 As Form10=New Form10()
f10.Show().
So baue ich Seite auf Seite als Form´s auf.
Ist das bis hierher OK.?
mfg Harald
-
Hallo Harald,
die beiden Anweisungen:
Dim f3 As Form3 = New Form3() Dim f3 As New Form3()
sind von der Funktionalität identisch.
Üblicherweise verwendet man die zweite Form.
Zum einen ist es kürzer, zum anderen eine Quelle weniger für Fehler.Solange Du eine der beiden Varianten verwendest, ist also alles in Ordnung.
Ärger (und die angeführte Ausnahme) gibt es erst, wenn Du schreibst:Dim f3 As Form3 f3.Show()
denn dann ist f3 Nothing und enthält keine Formularinstanz (=> Objektverweis).
Gruß Elmar
- Als Antwort markiert Robert Breitenhofer Freitag, 28. Januar 2011 13:33
-
Hallo Harald,
Beginnend mit Form1 und mittels Button und dort den Aufruf
' Nutzungsteil
Dim f3 As Form3 = New Form3()
f3.Show()
fahre ich fort.Mit jeder Ausführung vorstehenden Codes wird eine
neue Instanz Deiner Form3 erstellt und der
Variablen f3 ein Verweis auf diese neue Instanz
übergeben.Einfacher wäre übrigens
Dim f3 as New Form3
f3.ShowDaneben aber auch auf Form1 weitere Button´s mit
Aufrufen derer Art.Wie genau sehen diese Aufrufe aus?
Auf diesen Form´s mache ich dito weiter, indem ich z.Bsp.
auf Form3 einen Button habe, der in der Art des obigen
Aufrufes eine Form10 aufruft.
also Dim f10 As Form10=New Form10()
f10.Show().
So baue ich Seite auf Seite als Form´s auf.
Ist das bis hierher OK.?Da ich weder Sinn und Zweck, noch die konkrete
Arbeitsweise Deines Programmes kenne, kann ich
dazu nichts konkretes sagen. Soweit ich es bisher
erkennen kann, könnten bei Deinem Programm
10 Forms oder evtl. sogar mehr gleichzeitig geöffnet
sein. Ich kann mir nicht so recht vorstellen, dass dies
für den Benutzer halbwegs übersichtlich ist oder
irgendwie "ergonomisch" zu bedienen wäre.Der Benutzer kann ja immer nur auf einer Form
arbeiten. Diese sollte die für diesen Arbeitsschritt
notwendigen Controls und Informationen bereitstellen,
alles andere wäre erst mal überflüssiger Ballast, der
den Benutzer nur verwirrt.
Aber wie schon erwähnt, kann man dazu ohne Kenntnis
der genauen Aufgabenstellung nicht wirklich was
Konkretes sagen.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
hallo herr Peter Götz,
da ich mehrere derartige Programme für unsere Enkel und Kinder meiner Freunde erstellt habe, die oder der Fehler mich behindern,
könntes du so ein fehlerhaftes Programm mal anschauen?
ich würde es mittels CD zustellen. die gehenden Programme sind in meiner homepages
"bartzack.de" herunterzuladen.
es muss was mit der Anzahl zu tun haben, weil nicht nur die laufende Nr. 10, sondern ggf. dann auch
andere Forms mit Namen betroffen sind.
Wenn Sie es machen wollten, teilen sie mir Anschrift mit?
mfg
Harald Bartzack aus Dresden
e-mail bartzack@live.de