Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst VB.net Programm nach Abfrage beenden

Mitglied: listigerTeppich

listigerTeppich (Level 1) - Jetzt verbinden

19.03.2010 um 11:14 Uhr, 17154 Aufrufe, 8 Kommentare

Hallo Beisamen,

Ich arbeite an eionem VB.net Programm und habe das Problem, dass das Programm beim beenden nicht so reagiert wie ich es gerne hätte. Ich habe mir vorgestellt, dass das Programm per "Beenden"-Button und/oder per Druck auf "X" zu beenden ist. Es sollte jeweils eine Sicherheitsabfrage alá "Möchten Sie das Programm wirklich beenden?" vor der wirklichen Beendigung stattfinden.
Bisher reagiert mein Code auf die Abfrage entweder gar nicht oder nicht auf die gewünschte Weise.
mein bisheriger Code :

01.

02.
Private Sub cmdBeenden_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdBeenden.Click
03.

04.
 
05.

06.
        If MsgBox("Möchten Sie das Programm wirklich beenden?", MsgBoxStyle.YesNo, Me.Text) = MsgBoxResult.No Then
07.
                        Exit Sub
08.
        End If
09.

10.
        Close()
11.
        
12.
    End Sub
13.

14.
    Private Sub frmCopy_FormClosing(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
15.

16.
        Dim Cancel As Boolean = eventArgs.Cancel
17.
        Dim UnloadMode As System.Windows.Forms.CloseReason = eventArgs.CloseReason
18.
        'Programm nach Abfrage beenden
19.

20.

21.
        If MsgBox("Möchten Sie das Programm wirklich beenden?", MsgBoxStyle.YesNo, Me.Text) = MsgBoxResult.No Then
22.
            Cancel = True
23.
            Exit Sub
24.
        End If
25.

26.

27.

28.
        Dim sw As StreamWriter
29.
        EPfad = Verzeichnis1.Path
30.

31.
        sw = New StreamWriter(Ini, False)
32.
        sw.WriteLine(EPfad & Delim & "                                                    !MUSSbereitsEXISTIEREN! Einsprungsspfad für Datei-Explorer 
33.
        sw.WriteLine(Datum & Delim & "                                                   Datumsformat der Ablageordner und Protokoll-Dateien (yyyy_MM_dd)")
34.
        sw.WriteLine(Profilload & Delim & "                                              Profilname des ZenDrum-Servers ")
35.
        sw.WriteLine(Zdrum & Delim & "                                                   Pfad")
36.
        sw.WriteLine(Xdrum_done & Delim & "                                        Done-Pfad  ")
37.
        sw.WriteLine(Xdrum_log & Delim & "                                            Log-Pfad  ")
38.
        sw.WriteLine(putty & Delim & "                                                        Putty-Pfad ")
39.
        sw.WriteLine(sam & Delim & "                                                        PDF-SAM-Pfad ")
40.
        sw.WriteLine(fallzahlenprot & Delim & "                                        Fallzahlenprotokoll-Pfad ")
41.
        sw.WriteLine(zendrum_druckdienst_apc & Delim & "                Druckdateien-Ablage Netzwerk ")
42.
        sw.WriteLine(datadir & Delim & "                                                    Druckdateien-Ablage Lokal ")
43.
        sw.WriteLine(savedir & Delim & "                                                   Sicherungspfad-Pfad der Druckdateien")
44.
        sw.WriteLine(logdir & Delim & "                                                      Log-Pfad für Filecopy")
45.
        sw.Close()
46.

47.

48.
        Close()
49.

50.

51.
    End Sub
52.
Der streamwriter In der frmCopy_FormClosing ist für die Auslagerung bestimmter Dateipfade in eine .ini gedacht und hat mit dem Problem hoffentlich nichts zu tun.
War super wenn von euch eienr nen tipp hat :D
Mitglied: 76109
19.03.2010 um 12:25 Uhr
Hallo listigerTeppich!

Bin kein VB-Net-Experte, aber so wie ich das sehe, dann setzt Du in Codezeile 22 zwar Deine interne Variable Cancel auf True aber nicht das eventArgs.Cancel

Gruß Dieter
Bitte warten ..
Mitglied: TsukiSan
19.03.2010 um 13:02 Uhr
Hallo listigerTeppich,

in VBS oder VB funktioniert das ganze in etwa so:
01.
Frage = MsgBox( "Sind Sie sicher?",vbyesno,"....")
02.
If Frage = VbYes then 'Befehl
03.
If Frage = VbNo then 'Befehl
Würde mich wundern, wenn's in .Net nicht ähnlich sein sollte.

Gruss
Tsuki
Bitte warten ..
Mitglied: listigerTeppich
19.03.2010 um 13:12 Uhr
Hab das "eventArgs.Cancel = True" gesetzt....hat teilweise geholfen, Wenn ich die Beendenfrage mit "Nein"-Click beantworte, schliest er nur noch die Messagebox mit der Abfrage. So soll das ja auch sein, passt also


Wenn ich aber die Frage mit Klick auf "JA" bestätige passiert weiterhin erstmal nichts...auch nach 20 mal klicken auf ja passiert nichts...erst nach einem gefolgten Klick auf "Nein" schließt sich das Programm ganz.

das Schließen des Programmes geht (nach mehrmaligen) Tests auf folgende Weise:

X-Button:

mind 1x JA-Click gefolgt von einem Nein-Click

Beenden Button:

mind 2x-JA-Click gefolgt von einem Nein-Click


der "Nein-Click" bei der Frage "Möchten Sie das Programm wirklich beenden?" ist derzeit also immer erforderlich um das Programm zu beenden - Hilfe :D


Nachtrag: Hab die msgbox mal komplett raus ausm code genommen...wenn ich jetzt Beenden will, wirft das Programm ne Stackoverflow exception bei Line 31... Ka warum aber er sagt er läuft da inne Endlosschleife...weiss einer von euch warum das der Fall sein könnte?
Bitte warten ..
Mitglied: 76109
19.03.2010 um 14:00 Uhr
Hallo listigerTeppich!

Also, nach meiner Meinung müsste ab Codzeile 22 folgendes stehen:
01.
        If MsgBox("Möchten Sie das Programm wirklich beenden?", MsgBoxStyle.YesNo, Me.Text) = MsgBoxResult.No Then
02.
            eventArgs.Cancel = True
03.
        Else
04.
            Exit Sub
05.
        End If
Das Bedeutet:
Beim Ereignisaufruf enthält die Variable "eventArgs.Cancel" den Wert False. D. h. wenn der Wert unverändert bleibt, dann wird die Form geschlossen (Exit Sub). Im anderen Fall setzt Du die Variable "eventArgs.Cancel" auf True und bedeutet das alles beim alten bleibt, aber ohne Exit Sub, sonst bleibt zwar die Form geöffnet, aber der nachfolgende Code wird nicht ausgeführt. Bleibt allerdings die Frage ob der Code da überhaupt hingehört und nicht in eine andere z.B. Button-OK-Routine oder so?

Außerdem müsstest Du erst die Variable "eventArgs.CloseReason" auswerten. D.h. hier bekommst Du einen Statuscode, der besagt ob die Form durch den User oder durch ein anderes Ereignis geschlossen werden soll (siehe weiter unten). Hier musst Du erst prüfen, ob der User die Form schließen will oder oder die Form z.B. durch einen Beenden-Button geschlossen werden soll.

Ein weiters Problem, das Du noch berücksichtigen musst ist, dass diese Erreignis-Routine auch bei der Unload/Close-Anweisung aufgerufen wird. Also Statuswerte entsprechend auswerten.

In VBA gibt es z.B folgende Statuscodes:
vbFormControlMenu 0 Der Benutzer hat auf der UserForm im Systemmenü den Befehl Schließen gewählt.
VbFormCode 1 Die Unload-Anweisung wird durch Code aufgerufen.
VbAppWindows 2 Die aktuelle Windows-Betriebsumgebungssitzung wird beendet.
VbAppTaskManager 3 Die Anwendung wird vom Windows-Task-Manager geschlossen.

Gruß Dieter
Bitte warten ..
Mitglied: listigerTeppich
19.03.2010 um 16:37 Uhr
Mh, ich bin jetz schon nen ganzen Schritt weiter... hab mitbekommen , dass die Sub "cmdBeenden_Click" falls die Frage mit "ja" beantwortet wird, die Sub frmCopy_FormClosing aufruft. Daher muss man auch 2x "JA" klicken wenn man per Beenden-Button schließen will.

Die Lösung des Problems wäre also, wenn ich in der Sub "cmdBeenden_Click" lediglich weiterleite zur Sub "frmCopy_FormClosing".

Kann mir einer sagen wie ich aus einer Sub eine andere Sub aufrufe, bzw. auf diese weiterleite ?
Bitte warten ..
Mitglied: 76109
19.03.2010 um 17:08 Uhr
Hallo listigerTeppich!

Zitat von listigerTeppich:
Die Lösung des Problems wäre also, wenn ich in der Sub "cmdBeenden_Click" lediglich weiterleite zur Sub
"frmCopy_FormClosing".

Kann mir einer sagen wie ich aus einer Sub eine andere Sub aufrufe, bzw. auf diese weiterleite ?
Das brauchsr Du doch garnicht. In deinem Beenden-Click setzt Du nur die Form-Schließen-Anweisung und die FormClosing-Routine wird im Anschluß automatisch aufgerufen, wobei dann Deine Nachfrage getätigt wird. So sollte es zumindest sein?

Gruß Dieter
Bitte warten ..
Mitglied: listigerTeppich
23.03.2010 um 14:20 Uhr
Jo, recht haste - funktioniert wunderbar.

Danke !
Bitte warten ..
Mitglied: 76109
23.03.2010 um 19:32 Uhr
Hallo listigerTeppich!

Zitat von listigerTeppich:
Jo, recht haste - funktioniert wunderbar.
Freut mich
Danke !
Gern geschehen!

Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
Visual Studio

VB.NET-Programm (VS Community 2015) unter Windows 10 läuft nicht

gelöst Frage von BeStVisual Studio6 Kommentare

Hallo. Ich hoffe mir kann jemand helfen. Ich habe ein kleines Tool für den Privatgebrauch unter Visual Studio Community ...

Visual Studio

VB.NET Symlink (mklink)

gelöst Frage von duschgasVisual Studio6 Kommentare

Guten Tag, ich bin am verzweifeln. Mittels VB.NET möchte ich per Buttonklick einen Symlink (mklink) einer Datei erstellen. Mein ...

Visual Studio

Vb.net dynamische Logik

Frage von theoberlinVisual Studio6 Kommentare

Hallo zusammen, In der Hoffnung hier tummeln sich auch vb.net programmierer würde ich euch gern eine Frage stellen: Ich ...

Visual Studio

Netzwerkdrucker installieren, vb.net

gelöst Frage von HardExitVisual Studio

Hallo Leute, also nach langem Tüfteln habe ich jetzt einen Funktionierenden Drucker installationscode, den ich gerne mit euch teilen ...

Neue Wissensbeiträge
Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 3 StundenWindows 7

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 2 TagenInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 3 TagenMicrosoft Office7 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 5 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
Tipps & Tricks
Verdammt voll erwischt
Frage von AlchimedesTipps & Tricks23 Kommentare

Folgende Mail habe ich auf meinem Freenet Account erhalten: Nun folgendes Problem: 1) Ich besuche Porno Seiten yep hat ...

Router & Routing
Detaillierte Anleitung um VPN einzurichten mit den OnBoard VPN Clients für Windows 7 Pro
Frage von GerardDirksRouter & Routing17 Kommentare

Hallo Zu 99% arbeiten wir mit Apple Computer. Wir haben ein Lancom Router 1781EF+ um 2 Filiale zusammen zu ...

Vmware
Richtige Einstellungen beim ESXI 6.5 in Sachen CPU Zuweisung bei einer VM
gelöst Frage von zeroblue2005Vmware13 Kommentare

Hallo Zusammen, heute wollte ich mal fragen, wie ich eine VM die richtige Anzahl der von CPUs zuweise. Bin ...

Vmware
ESXI hebt Registrierung von Masschinen auf
Frage von SpitzbubeVmware12 Kommentare

Hallo, nutze seit einiger Zeit für meine IT Projekte einen alten HP G7 Server mit ESXi 6.5 und einem ...