none
Führt eine Anzahl von mehr als 10 Forms zu Problemen? RRS feed

  • 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
    Mittwoch, 5. Januar 2011 08:04

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-Steuerelementbibliothek

    Und eine Hardcopy muss (sollte) nicht sein.
    Die Fehlermeldung kann man direkt aus der Fehlerliste (STRG+C, Kontextmenü) kopieren und einfügen.

    Gruß Elmar

    Montag, 10. Januar 2011 09:26
  • 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

    Mittwoch, 12. Januar 2011 16:12

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

    Mittwoch, 5. Januar 2011 08:44
  • 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 Projekteigenschaften

        Option Explicit
    und
        Option Strict

    eingeschaltet?
    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)

    Mittwoch, 5. Januar 2011 08:48
  • 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
    Donnerstag, 6. Januar 2011 07:41
  • 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

    Freitag, 7. Januar 2011 13:54
  • 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

    Freitag, 7. Januar 2011 14:06
  • 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 Form10

    Auch 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)

    Sonntag, 9. Januar 2011 08:26
  • 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-Steuerelementbibliothek

    Und eine Hardcopy muss (sollte) nicht sein.
    Die Fehlermeldung kann man direkt aus der Fehlerliste (STRG+C, Kontextmenü) kopieren und einfügen.

    Gruß Elmar

    Montag, 10. Januar 2011 09:26
  • 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
    Montag, 10. Januar 2011 13:15
  • 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

    Mittwoch, 12. Januar 2011 14:13
  • 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

     

    Mittwoch, 12. Januar 2011 14:27
  • 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

    Mittwoch, 12. Januar 2011 16:12
  • 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.Show

    Daneben 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)

    Mittwoch, 12. Januar 2011 17:25
  • Hallo Elmar,

    na, da bin ich ja beruhigt. Also können meine wiederholten Fehlermeldung daher nicht kommen.

    mfg harald

    Mittwoch, 19. Januar 2011 13:07
  • 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

     

    Mittwoch, 19. Januar 2011 13:18