最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)延時并自動關(guān)閉MessageBox的方法

 更新時間:2014年08月05日 11:58:34   投稿:shichen2014  
這篇文章主要介紹了C#實現(xiàn)延時并自動關(guān)閉MessageBox的方法,非常實用的功能,需要的朋友可以參考下

我們在C#編程中常見的信息提示框(MessageBox)是微軟NET自帶的一個用于彈出警告、錯誤或者訊息一類的“模式”對話框。此類對話框一旦開啟,則后臺窗體無法再被激活(除非當(dāng)前的MessageBox被點(diǎn)擊或者關(guān)閉取消)。那么如何使用程序模擬鼠標(biāo)點(diǎn)擊這個messageBox(關(guān)閉這個MessageBox)令其延時并自動關(guān)閉呢?答案是你在彈出這個messageBox之前先啟用一個定時器,定時器內(nèi)部不斷向窗體發(fā)送Enter按鈕用于模擬點(diǎn)擊MsgBox的內(nèi)容,同時主程序中彈出模式消息框。

具體實現(xiàn)代碼如下(本程序運(yùn)行測試環(huán)境基于VS2012 RC 編寫):

我們假設(shè)窗體上就只有一個Button,點(diǎn)擊這個Button將彈出5個msgbox,同時每個msgbox將延時2秒后自動關(guān)閉。

C#功能代碼如下:

public partial class Form1 : Form
{
private System.Windows.Forms.Timer[] ts = new System.Windows.Forms.Timer[6];


public Form1()
{
  InitializeComponent();
  
}

void t_Tick(object sender, EventArgs e)
{
  ((System.Windows.Forms.Timer)sender).Enabled = false;
  SendKeys.SendWait("{Enter}");
}

private void button1_Click(object sender, EventArgs e)
{
  Action act = new Action(() => 
  {
 for (int i = 0; i < 6; i++)
 {
   ts[i] = new System.Windows.Forms.Timer();
   ts[i].Tick += t_Tick;
   ts[i].Interval = 2000;
   ts[i].Enabled = true;
   MessageBox.Show("MsgBox" + (i + 1));
   Thread.Sleep(2000);
 }
  });
  act.BeginInvoke(null, null);
}

}

Public Partial Class Form1
  Inherits Form
  Private ts As System.Windows.Forms.Timer() = New System.Windows.Forms.Timer(5) {}


  Public Sub New()

    InitializeComponent()
  End Sub

  Private Sub t_Tick(sender As Object, e As EventArgs)
    DirectCast(sender, System.Windows.Forms.Timer).Enabled = False
    SendKeys.SendWait("{Enter}")
  End Sub

  Private Sub button1_Click(sender As Object, e As EventArgs)
    Dim act As New Action(Sub() 
    For i As Integer = 0 To 5
      ts(i) = New System.Windows.Forms.Timer()
      AddHandler ts(i).Tick, AddressOf t_Tick
      ts(i).Interval = 2000
      ts(i).Enabled = True
      MessageBox.Show("MsgBox" & (i + 1))
      Thread.Sleep(2000)
    Next
End sub)
    act.BeginInvoke(Nothing, Nothing)
  End Sub

End Class

此外需要注意:

1.這里使用了“委托異步”是為了防止主線程被Thread延時導(dǎo)致假死的情況發(fā)生。

2.SendKeys這里必須使用SendWait,否則會拋出異常。

相關(guān)文章

最新評論

涞源县| 全南县| 南郑县| 扶绥县| 鄱阳县| 开封市| 建宁县| 新邵县| 保山市| 洪泽县| 普陀区| 班戈县| 和田县| 嘉荫县| 舞阳县| 济源市| 呼玛县| 扎兰屯市| 砀山县| 嵊泗县| 常州市| 福清市| 西乌| 宁海县| 镇康县| 崇仁县| 徐闻县| 监利县| 西乌| 桂阳县| 乌兰浩特市| 延寿县| 南乐县| 江都市| 雅江县| 滨州市| 台中县| 三台县| 桃园县| 云南省| 博乐市|