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

Frage Entwicklung Visual Studio

GELÖST

VB.net Programm nach Abfrage beenden

Mitglied: listigerTeppich

listigerTeppich (Level 1) - Jetzt verbinden

19.03.2010 um 11:14 Uhr, 16044 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
Batch & Shell
Programm beenden
gelöst Frage von garciamBatch & Shell4 Kommentare

Hallo zusammen Ich habe ein Problem, bei dem ich nicht weiterkomme Ich muss ein Programm zu einer bestimmten Zeit ...

Windows 7
Programme die IDLEn beenden.
Frage von killtecWindows 73 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeite, mit der man ein bestimmtes Programm bei einer Bestimmten IDLE-Zeit beendet. Bsp. ...

Entwicklung
Benutzerzugriff auf ein Programm automatisch beenden
gelöst Frage von imebroEntwicklung56 Kommentare

Hallo, in einem anderen Thread ) hatte ich danach gefragt, wie man den Servermanager mit einem Unterpfad per Script ...

Visual Studio
Srv records aus dem dns abfragen unter vb.net
Frage von Herbrich19Visual Studio14 Kommentare

Hallo, Ich würde gerne unter vb.net srv dns einträge für mein eigenes Netzwerk Protokoll abfragen. Ich bin gerade dabei ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 8 StundenRouter & Routing2 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 14 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 19 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...