none
如何使得程序可以连续弹出窗口? RRS feed

答案

  •         While True
                MessageBox.Show("Hello")
            End While

    2012年3月16日 15:51
  • 请将问题描述清楚,你是要连续弹出“窗口”还是“消息框”?

    就是说,你要弹出MessageBox还是Form。

    还有你是希望等待用户响应后再弹出新的还是不需要等待用户按下确定就弹出新的?

    1、弹出窗口

    使用窗体数组就可以解决。

    在Form1中加入一个Button,命名Button1,其Click过程如下:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim forms(10) As Form1
            For i As Integer = 0 To 10
                forms(i) = New Form1
                forms(i).Show()
            Next
        End Sub

    运行,点击Button1,就会连续弹出11个窗口。

    对上述代码作一些修改,修改如下:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim forms(2) As Form1
            For i As Integer = 0 To 2
                forms(i) = New Form1
                forms(i).ShowDialog()
            Next
        End Sub

    这样,点击Button1后,就会在弹出的窗口关闭后,再弹出新的窗口,总共弹出11个。

    2、弹出消息框

    还是在Form1,Button1里,点击过程改成这样:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Do
                MsgBox("This is a messagebox.")
            Loop
        End Sub

    这个是和楼上一样的方法,也就是按下确定后才会弹出新的消息框。这个是无限的,要有限的话就要用For或While。

    如果你想要连续弹出不经用户响应,用MessageBox是不行的,除非你创建很多个线程,每个线程都弹出一个。

    如果用VBS,可以使用popup。

    多线程代码实现如下:

    Public Class Form1
        Dim Threads(10) As System.Threading.Thread
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For i As Integer = 0 To 10
                Dim ShowMsgThread As New System.Threading.Thread(AddressOf Me.ShowMsg)
                Me.Threads(i) = ShowMsgThread
                Me.Threads(i).Start()
            Next
        End Sub
    
        Private Sub ShowMsg()
            MsgBox("This is a messagebox.")
        End Sub
    End Class

    这样写就可以连续弹出11个MessageBox了。

    码字辛苦,希望采纳。

    也希望能解决您的问题,如果您还有疑问,欢迎继续回复。

    2012年3月17日 6:33
  • 楼主,我没有明白你为什么需要连续弹出对话框?因为如果按照Shadow Happy(也就是你的意思,你的程序根本无法继续使用,因为一直弹框,要死机的或者无法控制其它东西了)

    最简单的办法(弹出N个对话框):

    Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For i As Integer = 1 To N
                ShowMsg()
            Next
        End Sub
    
        Private Sub ShowMsg()
            MsgBox("This is a messagebox.")
        End Sub
    End Class


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月17日 8:31
    版主

全部回复

  •         While True
                MessageBox.Show("Hello")
            End While

    2012年3月16日 15:51
  • 请将问题描述清楚,你是要连续弹出“窗口”还是“消息框”?

    就是说,你要弹出MessageBox还是Form。

    还有你是希望等待用户响应后再弹出新的还是不需要等待用户按下确定就弹出新的?

    1、弹出窗口

    使用窗体数组就可以解决。

    在Form1中加入一个Button,命名Button1,其Click过程如下:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim forms(10) As Form1
            For i As Integer = 0 To 10
                forms(i) = New Form1
                forms(i).Show()
            Next
        End Sub

    运行,点击Button1,就会连续弹出11个窗口。

    对上述代码作一些修改,修改如下:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim forms(2) As Form1
            For i As Integer = 0 To 2
                forms(i) = New Form1
                forms(i).ShowDialog()
            Next
        End Sub

    这样,点击Button1后,就会在弹出的窗口关闭后,再弹出新的窗口,总共弹出11个。

    2、弹出消息框

    还是在Form1,Button1里,点击过程改成这样:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Do
                MsgBox("This is a messagebox.")
            Loop
        End Sub

    这个是和楼上一样的方法,也就是按下确定后才会弹出新的消息框。这个是无限的,要有限的话就要用For或While。

    如果你想要连续弹出不经用户响应,用MessageBox是不行的,除非你创建很多个线程,每个线程都弹出一个。

    如果用VBS,可以使用popup。

    多线程代码实现如下:

    Public Class Form1
        Dim Threads(10) As System.Threading.Thread
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For i As Integer = 0 To 10
                Dim ShowMsgThread As New System.Threading.Thread(AddressOf Me.ShowMsg)
                Me.Threads(i) = ShowMsgThread
                Me.Threads(i).Start()
            Next
        End Sub
    
        Private Sub ShowMsg()
            MsgBox("This is a messagebox.")
        End Sub
    End Class

    这样写就可以连续弹出11个MessageBox了。

    码字辛苦,希望采纳。

    也希望能解决您的问题,如果您还有疑问,欢迎继续回复。

    2012年3月17日 6:33
  • 楼主,我没有明白你为什么需要连续弹出对话框?因为如果按照Shadow Happy(也就是你的意思,你的程序根本无法继续使用,因为一直弹框,要死机的或者无法控制其它东西了)

    最简单的办法(弹出N个对话框):

    Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For i As Integer = 1 To N
                ShowMsg()
            Next
        End Sub
    
        Private Sub ShowMsg()
            MsgBox("This is a messagebox.")
        End Sub
    End Class


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月17日 8:31
    版主
  • Shaddow那个好像必须得点才能消失吧

    Visual Basic 初学者 望关照!

    2012年3月17日 12:32
  • Shaddow那个好像必须得点才能消失吧

    Visual Basic 初学者 望关照!

    哪个Shaddow?

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月18日 1:49
    版主
  • 第一个啊

    Visual Basic 初学者 望关照!

    2012年3月31日 10:42