vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Invoke für die Attribute ? 
Autor: rub
Datum: 22.06.06 14:45

ok, Danke erstmal

Ich habe das Problem gelöst, indem ich jetzt lediglich das Handle des Fensters, als string übergebe,
weil ich auch nur das zur prüfung benötige (Prüfung, ob das Event im Formular ausgeführt wird, wo es abgearbeitet werden soll.)

Jetzt geht es aber genau so weiter.

Ok, << Üblicherweise gibt's nur einen Thread mit Controls
Ja,

Jetzt wollte ich aber meine Fenster bereits im Vorfeld initialisieren, um die Wartezeit für den User zu verkürzen. (bis zu 5 Sekunden)

Desshalb habe ich mir eine Klasse gebastelt, die das macht, aber eben über nen Thread.
Die Instanzen werden dort in eine ArrayList geschrieben und beim Anzeigen, gelöscht und neu initialisiert.
Hier die Funktionen
Public Class co_Fensterverwaltung
   Public Function FensterOeffnen(ByVal Fenstername As String) As Object
        Dim RueckgabeForm As Object = Nothing
 
        'Prüfung, ob gerade ein Fenster über diese Funktion geöffnet wird.
        'Global Shared
        If cup_System.cls_System_Global.FensterArrayListeIsBussi = True Then
            MsgBox("Das Fenster kann momentan nicht geöffnet werden." & _
              "Wiederholen Sie den Vorgang nochmals", MsgBoxStyle.OkOnly, _
              cup_System.cls_System_Global.Anwendungstitel)
            Return Nothing
            Exit Function
        End If
 
        cup_System.cls_System_Global.FensterArrayListeIsBussi = True
 
        Try
            For i As Integer = 0 To _
              cup_System.cls_System_Global.FensterArrayListe.Count - 1
                If cup_System.cls_System_Global.FensterArrayListe.Item(i).name _
                = Fenstername Then
                    RueckgabeForm = _
                    cup_System.cls_System_Global.FensterArrayListe.Item(i)
                    cup_System.cls_System_Global.FensterArrayListe.RemoveAt(i)
                    Exit For
                End If
            Next
 
            System.Windows.Forms.Application.DoEvents()
 
            Dim ts As New ThreadRun(Fenstername)
            ts.run()
 
        Catch ex As Exception
            If IsNothing(cup_System.cls_System_Global.PersonalID) Then
                Me.Co_SystemComponent1.ErrorMail("co_Fensterverwaltung", "Nicht" & _
                  "vorhanden", New StackFrame().GetMethod().Name, ex, "", _
                  False, False, False, True)
            Else
                Me.Co_SystemComponent1.ErrorMail("co_Fensterverwaltung", _
                  cup_System.cls_System_Global.PersonalID.ToString, New _
                  StackFrame().GetMethod().Name, ex, "", False, False, False, _
                  True)
            End If
        End Try
 
        Return RueckgabeForm
 
    End Function
 
End Class
 
---------------------------
 
Public Class ThreadRun
    Private Fenstername1 As String
 
    Public Sub New(ByVal Fenstername As String)
        Me.Fenstername1 = Fenstername
    End Sub
 
    Delegate Sub FensterAnlegenDelegate()
    Private Sub FensterAnlegen()
        Try
            Select Case Fenstername1
                Case "frmAufgabeAendern"
                    Dim frm1 As New cup_ModulNachrichten.frmAufgabeAendern
                    frm1.Opacity = 0
                    frm1.Show()
                    frm1.Hide()
                    frm1.Opacity = 100
                    cup_System.cls_System_Global.FensterArrayListe.Add(frm1)
 
                Case "frmNeueAufgabe"
                    Dim frm2 As New cup_ModulNachrichten.frmNeueAufgabe
                    frm2.Opacity = 0
                    frm2.Show()
                    frm2.Hide()
                    frm2.Opacity = 100
                    cup_System.cls_System_Global.FensterArrayListe.Add(frm2)
 
                Case Else
                    'Do nothing
            End Select
 
            cup_System.cls_System_Global.FensterArrayListeIsBussi = False
 
        Catch ex As Exception
            Debug.WriteLine("_")
        End Try
    End Sub
 
    Public Sub run()
        Dim Thread As New Threading.Thread(AddressOf FensterAnlegen)
        Thread.Start()
    End Sub
 
End Class
Mit
dim Co_Fensterverwaltung1 as New cup_co_Spezial.co_Fensterverwaltung
 
sub x...
                        Dim frm As frmAufgabeAendern
                        frm = Me.Co_Fensterverwaltung1.FensterOeffnen( _
                          "frmAufgabeAendern")
end sub
 
 
------
 
'Namespace in cup_System
Public Class cls_System_Global
 
    'Über diese Arrayliste werden die Fenster vorgeladen, damit diese schneller 
    ' dargestellt werden können.
    Public Shared FensterArrayListe As New ArrayList
    Public Shared FensterArrayListeIsBussi As Boolean = False
 
end class
über frm kann ich dann auf das Fenster zugreifen. Das funktioniert auch.

Wenn ich jetzt aber frm.show() ausführe bekomme ich die Fehlermeldung, dass der Objektverweis nicht stimmt.

OK, das hatte ich ja auch schon ein paar mal, aber ich finde die Lösung einfach nicht.
hast Du mir vielleicht noch einen Tipp, oder Rat?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Invoke für die Attribute ?1.171rub22.06.06 11:39
Re: Invoke für die Attribute ?784rub22.06.06 11:41
Re: Invoke für die Attribute ?726ModeratorDaveS22.06.06 13:53
Re: Invoke für die Attribute ?733rub22.06.06 14:45
Re: Invoke für die Attribute ?786ModeratorDaveS22.06.06 15:24

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel