不断检查进程并显示Button / TextBox

时间:2013-06-18 12:10:16

标签: if-statement process vb.net-2010 hidden-field form-load

我正在尝试使用VB.Net创建form来检查IExplorer进程是否正在运行,然后显示RichTextBox(建议用户关闭IE)是进程= 1并且如果进程= 0,则Button进入下一个form

这是最简单的部分,困难的部分是如果在加载表单时进程为= 0然后用户打开IE,我想删除按钮并显示RichTextBox(它建议用户关闭IE)并再一次如果他们关闭IE,Button会重新出现。

我在button中有RichTextBoxform_load,其中If语句显示取决于IE是否打开,但我无法让它们交换如果IE关闭或打开,任何帮助将不胜感激。

以下是我在RTB和Button

的Form_load中的代码
aProc = Process.GetProcessesByName("iexplore")

If aProc.Length = 0 Then
    Dim b1 As New Button
    b1.Location = New System.Drawing.Point(274, 244)
    b1.Name = "btnOK"
    b1.Size = New System.Drawing.Size(75, 29)
    b1.TabIndex = 5
    b1.Text = "OK"
    b1.UseVisualStyleBackColor = False
    Me.Controls.Add(b1)
    AddHandler b1.Click, AddressOf btn_OK

Else
    Dim t1 As New RichTextBox
    t1.Location = New System.Drawing.Point(170, 233)
    t1.Name = "rtbMessage2"
    t1.ReadOnly = True
    t1.Font = New System.Drawing.Font("Arial", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    t1.Size = New System.Drawing.Size(293, 40)
    t1.TabIndex = 5
    t1.Text = ("Internet Explorer is Running - Please Close Internet Explorer to Continue")
    Me.Controls.Add(t1)
    AddHandler t1.Click, AddressOf btn_OK
End If

1 个答案:

答案 0 :(得分:0)

我会做出两个改变:

  • 添加一个不断调用逻辑的计时器(显示/隐藏Button / RichTextBox)
  • 使Button和RichTextBox始终存在,但最初是不可见的。

为此,我会(在加载时)使用.Visible = false创建Button和RichTextBox。然后创建一个每500毫秒(+/-)运行一次的计时器。该计时器将调用包含您上面的逻辑的函数。但是,不是创建控件(使用该逻辑),而只是引用它们并设置它们的可见性。

实质上,创建一次控件,多次运行逻辑。