Veröffentlicht 31. Mai 200619 j Hallo, wie kann ich eine Messagebox zeitgesteuert aurufen, so dass das Programm , wenn der Anwender auf eine Frage nicht reagiert, mit einer Default-Antwort weitermacht? Ich denke mir, dass die normale MsgBox ungeeignet sein wird, wie löse ich es dann ? Eine eigene Form laden und per Timer wieder abschiessen ? Danke schon mal Gruss Thoralf
31. Mai 200619 j Du könntest die msgbox auch in einem asynchronen Thread aufrufen. Dann kannst du den Timer im Hauptformular setzen und den 2. Thread von dort aus beenden. Ne kleine Hilfe von MSDN gibs dafür hier.
1. Juni 200619 j Ziemlich dreckige lösung finde ich. Erbe lieber von der Messagebox, füg den Teimer und ne Property hinzu in der du die Zeit setzen kannst, dann überschreib einfach die Show Methode und starte darin den Timer, welcher später deine MessageBox wieder schließt.
1. Juni 200619 j was heißt dreckigie lösung? ich lass meinen code normalerweise nie in UI-thread ausführen.
1. Juni 200619 j nich zanken @MarkusLe das klingt mir als die eleganteste Lösung, allerdings überfordert diese Grobbeschreibung die Dev-Kenntnisse eines Systemintegrators. Hätteste villeicht ein paar Codebrocken für mich , damit mir die grundsätzliche Vorgehensweise klar wird ? Wär super. Danke schon mal Gruss Thoralf
1. Juni 200619 j @Spachten Es ist aufjedenfall nicht besonders schön einen Thread einfach abzuschießen. Wenn du es ganz sauber machen wolltest müsstest du natürlich noch zusätzlich einen Controller für die MessageBox schreiben. @lakarando Ich musste leider gerade feststellen das man von MessageBox nicht erben kann. Daher müsstest du dir wohl selbst nen kleinen Dialog zusammenklicken. Den kannst du dann ja wieder von einem Controller steuern lassen., der den Timer enthält (wenn dus ganz sauber haben willst). Ansonsten auch in Anbestracht der Tatsache das du dir als FISI nicht unbedingt die Gedanken über sawos machen musst, kannst das ja auch direkt im Dialog machen. Um dir Code zu posten fehlt mir leider die Zeit. Vielleicht kann dir da ja Spachten weiterhelfen^^ Gruß Markus
1. Juni 200619 j @ MarkusLe: du musst den Thread ja nicht hart abschiessen. Die MessageBox könnte sich ja beim Cancel_Request sauber verabschieden. Natürlich nur wenn MsgBox in der Lage dazu ist. Sonst einfach ein neues Form als Dialog verwenden. @ Topic: Ich hab auch nicht wirklich Zeit um viel zu coden. Ein zweites Windows-Form zum Projekt hinzufügen und Timer draufpacken. Im Konstruktor wird die gewünchte Zeit entgegengenommen. Ich hoffe das hilft. 'Klasse Form2.vb Public Class Form2 Public Sub New(ByVal zeit As Integer) ' Dieser Aufruf ist für den Windows Form-Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. Timer1.Interval = zeit End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Me.Close() End Sub Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Timer1.Start() End Sub End Class 'Klasse Form1.vb Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim objForm As New Form2(10000) objForm.Show() End Sub
1. Juni 200619 j Das mit der zweiten Form wäre auch mein Ausweg gewesen, wenn es keine andere Möglichkeit gibt. Dann mach ich es so, danke dennoch für Zeit und Mühe. Gruss Thoralf
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.