MsgBox mit Timer

Swordwolf360

Grünschnabel
Hallo...

Ich bin ein Neuling in VB...

Und möchte zum Anfang ein Simples Tool generieren...
Und zwar möchte ich, dass nach einer bestimten Zeit, eine MsgBox aufgerufen wird.

Kann mir jemand so ein Code geben?

Ich arbeite mit Visual Basic 2005 Express.

Zusätzlich würde ich gerne wissen wie ich einen Link in ner MsgBox so kennzeichenen kann, dass der benutzer den Link anwählen kann...
 
Zuletzt bearbeitet:
Hallo,
erstmal herzlich Willkommen im Forum :)

Zu deinem Problem, du musst erstmal einen Timer in VB.NET erstellen, dazu ziehst du die Timer Komponente aus deiner Toolbox auf deine Anwendung. In den Eigenschaften, machst du Intervall z.B. auf 5000 = 5 Sekunden. Jetzt kannst du in einem Button Event den Timer starten timer1.Start(). In dem du einen doppelklick auf die Timer Komponente machst, erstellst du automatisch ein Event mit dem Namen timer1_Tick. In dem legst du deine MessageBox ab und nach der MessageBox führst du noch ein timer1.Stop() aus. Für sowas einfaches wie du es planst, funktioniert das bestens ;)

Visual Basic:
Private  Sub timer1_Tick(ByVal sender As Object, ByVal e As EventArgs)
            MessageBox.Show("test")
            timer1.Stop()
End Sub

Zu deinem anderen Problem, hab ich mal was gebastelt, das hab ich aber nur in C#, da ich in VB.NET nicht so ganz fit bin, aber vielleicht hilft dir das weiter, damit du das in VB.NET nachbastelst:
C#:
public static class MyMessageBox
    {
        public static DialogResult Show(string text) { return MessageBox.Show(text); }

        public static DialogResult Show(string message, string url, int startUrl, int laenge)
        {
            Form form = new Form();
            form.Size = new Size(300, 100);
            form.StartPosition = FormStartPosition.CenterScreen;
            form.ShowIcon = false;
            form.ShowInTaskbar = false;
            form.FormBorderStyle = FormBorderStyle.FixedDialog;
            form.MinimizeBox = false;
            form.MaximizeBox = false;

            LinkLabel link = new LinkLabel();
            link.Location = new Point(10, 10);
            link.Size = new Size(280, 25);
            link.Text = message;
            link.Links.Add(startUrl, laenge, url);
            link.LinkClicked += new LinkLabelLinkClickedEventHandler(link_LinkClicked);

            Button ok = new Button();
            ok.DialogResult = DialogResult.OK;
            ok.Text = "OK";
            ok.Size = new Size(75, 23);
            ok.Location = new Point((form.Width - ok.Width) / 2, 35);

            form.Controls.Add(link);
            form.Controls.Add(ok);

            return form.ShowDialog();
        }

        static void link_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start(e.Link.LinkData as string);
        }

Aufrufen tust du es dann so:
C#:
MyMessageBox.Show("Hallo, schau dir mal: TexturenLand an", "www.texturenland.de", 22, 12);

Gruß
Konstantin
 
OK der timer würde fnktionieren... Aber ich habe meine frage ein bisschen falsch formuliert...
Ich zeige hier mal meinen Code:

Code:
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim TempInteger As Integer = HaloMap.FindTagIndexByPath(ListBox1.Text)
        If TempInteger = 0 Then Exit Sub


        Dim TagMetaOffset As Long = HaloMap.H2Tag(TempInteger).MetaOffset

        Dim PluginValue As Long = HexToDec("227C")

        Dim BW As New BinaryWriter(New FileStream(HaloMap.MapLocation, FileMode.Open, FileAccess.Write, FileShare.Write))


        BW.BaseStream.Position = TagMetaOffset + PluginValue


        Dim TempSingle As Single = TextBox1.Text
        BW.Write(TempSingle)


        '----------------------------------------------------------------------------------------------------------

        Dim PluginValue1 As Long = HexToDec("2280")

        Dim BW1 As New BinaryWriter(New FileStream(HaloMap.MapLocation, FileMode.Open, FileAccess.Write, FileShare.Write))


        BW.BaseStream.Position = TagMetaOffset + PluginValue1

        Dim TempSingle1 As Single = TextBox2.Text
        BW.Write(TempSingle)


        '------------------------

        Dim PluginValue2 As Long = HexToDec("2284")

        Dim BW2 As New BinaryWriter(New FileStream(HaloMap.MapLocation, FileMode.Open, FileAccess.Write, FileShare.Write))


        BW.BaseStream.Position = TagMetaOffset + PluginValue2

        Dim TempSingle2 As Single = TextBox3.Text
        BW.Write(TempSingle)


        '--------------------------

        Dim PluginValue3 As Long = HexToDec("2288")

        Dim BW3 As New BinaryWriter(New FileStream(HaloMap.MapLocation, FileMode.Open, FileAccess.Write, FileShare.Write))


        BW.BaseStream.Position = TagMetaOffset + PluginValue3


        Dim TempSingle3 As Single = TextBox4.Text
        BW.Write(TempSingle)


        BW.Close()
        ProgressBar1.Show()

        Timer1.Start()
        MsgBox("Test")
        Timer1.Stop()


    End Sub

Das wird ein Halo 2 Matg modding Tool... Aber hab da ein Problem...
Wenn ich am Schluss wo der BinaryWriter geclost wird eine MsgBox hinmache, und ich mit der geöffneten Datei eine andere Action ausführen will, kommt die Fehlermeldung, dass die Datei von einem anderen Prozess verwendet wird.
Wenn ich aber nach dem Writen so 5-6 Sek warte gehts... Ich dachte ich mach an der folgenen Stelle einen Timer rein...

Code:
        BW.Close()
        ProgressBar1.Show()

        Timer1.Start()
        MsgBox("Test")
        Timer1.Stop()

Der funktionier aber net ganz...(Die MsgBox kommt nich erst nach 5 Sek sondern gleich nach dem Klick auf den Button... Hab aber schon 5000 mls angegeben beim Timer) Kann mir da jemand helfen?
Ah ja, dass ich so keine Ahnung habe is net ganz war ;)...
Ich hab n bissel n Wissen auf den Modding Tools weil ich da viele Tuts durchget habe, aber
hab kein Grundwissen:(...
 
Zuletzt bearbeitet:
hi,

Swordwolf360 schrieb:
Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        BW.Close()
        ProgressBar1.Show()

        Timer1.Start()
        MsgBox("Test")
        Timer1.Stop()
End Sub

Ehm hättest du den Anfang von Konstantin Gross' Kommenater mal aufmerksam gelesen, dann hättest du dein Problem schon längst selber gelöst:

Konstantin Gross schrieb:
Code:
      Private  Sub timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles timer1.Tick

                  MessageBox.Show("test")
                  timer1.Stop()

      End Sub

Das was du machst bewirkt, dass der Timer eingeschlatet wird, die Msgbox gezeigt und der Timer direkt wieder deaktiviert wird.

Du musst den Aufruf der MsgBox in die Timer_Tick Prozedur schreiben, die zum ersten Mal nach den in Timer1.Interval angegebenen Millisekunden aufgerufen wird (Sobald der Timer aktiviert wurde).

Und damit deine MsgBox dann nicht alle 5 Sekunden angezeigt wird, musst du den Timer noch deaktivieren.

Das findet man in jedem Grundlagenwissen zu vb.net. Google mal kurz und du findest mehrere gute Online-Workbooks.

mfg,
chrstn
 
Zurück