zerou24
Goto Top

Visual basic msgbox "Wegklickbar" machen

Hallo!
Ich habe ein programm geschrieben, das eine progressbar durchlaufen lässt und bei 100% die msgbox "hallo" ausgibt.
Problem war zuerst es öfnnenten sich unendlich boxen was ich gefixt habe, indem ich den timer "resettet" habe er fängt wieder bei 0 an und zählt wieder bis 100.
Nun zu meiner frage wie mache ich es, dass eine msgbox wegklickbar ist so das ich auf die erste form klicken kann um den timer zu stoppen?
Public Class Form1

    Private Sub ProgressBar1_Click(sender As Object, e As EventArgs) Handles ProgressBar1.Click


    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        ProgressBar1.Increment(1)
        If ProgressBar1.Value = 100 Then
            ProgressBar1.Value = 0
            MsgBox("Hello")  
        End If

    End Sub

    Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
        Timer1.Start()
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Timer1.Stop()
    End Sub
End Class
Danke face-smile
EDIT:Das ging flott hab den fehler selber behoben, indem ich button2 enfertnt und Timer1.Stop in die if abfrage gesetzt habe face-smile

Content-Key: 289791

Url: https://administrator.de/contentid/289791

Printed on: April 23, 2024 at 08:04 o'clock

Member: emeriks
Solution emeriks Dec 01, 2015 updated at 20:57:50 (UTC)
Goto Top
Hi,
um Deine Frage zu beantworten:
Eine Message-Box ist in VB immer modal, sprich an eine Parent-Form gebunden. Wenn Du einen Dialog öffnen möchtest, der sich zwar über eine andere Form legt, diese aber noch bedienbar haben willst, dann musst Du Dir einen eigene Message-Form erstellen, welche Du dann mit .Show (statt .ShowDialog) startest.

Erstelle z.B. eine Form "frmMessage" mit einem Label "lbMessage" und einem Button "btnOK".
Dann erstellst Du im Code der Form eine neue "Public Sub New(ByVal Message as String").
In der Sub gibst Du die übergebene Message an das Label weiter: lbMessage-Text = Message

Class frmMessage
  Public Sub New(ByVal Message as String)
    Me.InitializeComponents
    lbMessage.Text = Message
    Me.AcceptButton = btnOK
  End Sub

  Private Sub btnOK_Click Handles btnOK.Click
    Me.Hide
  End Sub
End Class

Die Message-Form verwenden, z.B.
Dim µF As New frmMessage("Hallo Welt!")  
µF.Show


Oder:
Wenn Du das gewollt in einer wiederholten Schleife haben willst, dann ginge das auch so:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Static µPause As Boolean = False

        If Not µPause Then
           ProgressBar1.Increment(1)
           If ProgressBar1.Value = 100 Then
              µPause = True
              ProgressBar1.Value = 0
              MsgBox("Hello")  
              µPause = False
           End If
        End If
    End Sub


Oder einfach:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
           ProgressBar1.Increment(1)
           If ProgressBar1.Value = 100 Then
              Timer1.Stop
              ProgressBar1.Value = 0
              MsgBox("Hello")  
              Timer1.Start
           End If
    End Sub



E.
Member: Zerou24
Zerou24 Dec 01, 2015 at 20:58:37 (UTC)
Goto Top
Danke dir vielmals! Sehr informativ bin ja noch neu vorallem im programmieren Danke dir, dass du dir die Zeit genommen hast face-smile
Mitglied: 108012
108012 Dec 02, 2015 at 02:13:33 (UTC)
Goto Top
Hallo,

ist eventuell zu spät aber passt dennoch;

MsgBox "Hallo Welt"  
Damit öffnet sich ein Messagebox und die kann man dann mittels eines
"Ok" Buttons beenden. Abgespeichert als .vbs (visual basic script)


Gruß
Dobby
Member: Zerou24
Zerou24 Dec 26, 2015 at 17:16:06 (UTC)
Goto Top
ich weiß ja nicht ob du dir die frage oder den code angeguckt hast aber msg box ist vorhanden..