vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
main() in WPF Anwendung 
Autor: McDry
Datum: 17.09.21 17:27

Liebes Forum, ich versuche Folgendes und scheitere kläglich:

Class MainWindow

Public Shared Sub main()
MsgBox("Hello there")
StartButton()
End Sub

Public Sub StartButton()
:
End Sub

End Class

Beim Aufruf von „StartButton“ in main() erscheint folgende Fehlermeldung:
„Auf einen Instanzmember einer Klasse kann nicht ohne explizite Instanz einer Klasse von einer/m freigegebenen Methode/Member aus verwiesen werden.“

Wie kann ich StartButton() in main() aufrufen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: main() in WPF Anwendung 
Autor: Manfred X
Datum: 18.09.21 17:45

Hallo!

Eine Shared-Methode (main) existiert unabhängig von Klassen-Instanzen
als Member der Klasse selbst - nur einmal im Speicher.

"StartButton" ist eine Instanz-Methode (dem erstellten 'MainWindow' zugeordnet)
und kann deshalb nicht direkt in einer Shared-Methode gerufen werden.

Beitrag wurde zuletzt am 18.09.21 um 18:01:28 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: main() in WPF Anwendung 
Autor: McDry
Datum: 18.09.21 19:46

Hallo Manfred X, danke für die schnelle Antwort.
Dann muss ich meine Frage anders stellen: Wie schaffe ich es, dass die Instanzmethode "SartButton" automatisch ausgeführt wird, beim Starten der Applikation?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: main() in WPF Anwendung 
Autor: Manfred X
Datum: 18.09.21 20:08

Das hängt von der Funktion StartButton ab und kann nicht pauschal
beantwortet werden.

Zunächst solltest Du Dir klar machen, was genau eine Shared-Methode ist
(gültig für alle Instanzen der Klasse und über den Klassennamen allgemein
aufrufbar - analog den Funktionen in einem Modul) und was eine Instanz-Methode
ist (spezifisch für jede einzelne Instanz aufzurufen).

Entweder Du programmierst eine Klasse, packst die Methode StartButton dort
hinein und erstellst von dieser Klasse eine Instanz im Main, deren Methode
StartButton gerufen werden kann.
Oder Du machst aus StartButton eine Shared-Methode, schreibst also das
Schlüsselwort SHARED dazu.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: main() in WPF Anwendung 
Autor: McDry
Datum: 19.09.21 11:28

Hallo Manfred X,
ich muss meine Anwendung näher erklären. Wenn ich deinen Vorschlägen folge, verschiebe ich das Problem nur tiefer in meine Anwendung.
Hier die Erklärung, was ich machen will:
VB.NET, WPF-Applikation
- Auf dem Bildschirm soll eine Uhr angezeigt werden, mit animierten Zeigern, mit laufendem Sekundenzeiger.
- Die notwendeigen Funktionen dazu sind in Class MainWindow implementiert
- Im UI ist ein Button, der StartButton aufruft und dann läuft die Uhr los – soweit alles gut.
- Ich möchte aber, dass die Uhr sofort losläuft, wenn die Applikation gestartet wird (ohne Startknopf im UI).
- Daher die Idee, irgendwie in main() die Uhr zu starten, aber das gelingt mir nicht. Es sieht so aus, dass man zwar in main() eine Shared Methode aufrufen kann, aber aus dieser Shared Methode kann dann keine Instanzmethode aufgerufen werden. Auch kein Zugriff auf UI Komponenten (Canvas).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: main() in WPF Anwendung 
Autor: Kuno60
Datum: 19.09.21 14:12

Hallo McDry,

  Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles _
    Me.Loaded
    StartButton()
  End Sub
wenn du dieses Ereignis verwendest, wird StartButton aufgerufen, wenn das Fenster geladen wurde.

Wenn StartButton schon vor dem Laden des Fensters aufgerufen werden soll, so geht das in der Sub Main so:
Class MainWindow
 
  <STAThread>
  Public Shared Sub Main()
    Dim app As New System.Windows.Application
    Dim w As New MainWindow
    w.StartButton()
    app.MainWindow = w
    app.Run(w)
  End Sub
 
  Private Sub StartButton()
    My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Beep)
    MsgBox("Hallo du da")
  End Sub
 
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: main() in WPF Anwendung 
Autor: McDry
Datum: 19.09.21 15:34

Hallo Kuno,
vielen Dank, das ist die Lösung!
Ich habe schon so viel Zeit zu dem Thema investiert und jetzt, zack ist alles geklärt.
Wieder was gelernt.
Wie findet man denn solche Funktionen wie MainWindow_Loaded?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: main() in WPF Anwendung 
Autor: Kuno60
Datum: 19.09.21 15:52

McDry schrieb:
Zitat:

Wie findet man denn solche Funktionen wie
MainWindow_Loaded?


Wähle über dem Editor-Codefenster, in der mittleren Combobox (MainWindow Ereignisse) und wähle dann in der rechten Combobox das gewünschte Ereignis.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: main() in WPF Anwendung 
Autor: McDry
Datum: 19.09.21 17:00

Das war wohl zu naheliegend für mich ...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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