创建一个可定时自动关闭的MessageBox

      前几天经常看到有朋友说想使用可以定时关闭而无需用户点击的对话框,有的朋友给出了调用API 的做法。这里我再用窗体来实现一个可以定时自动关闭的对话框。

      首先创建一个工程,将主窗体命名为MainForm ,在其上添加一个按钮,命名为btnShowDialogText 设为 显示自定义定时关闭的对话框。然后添加一个窗体,属性设置如下:

Name

AutoClosedMessageBox

FormBorderStyle

FixedSingle

MaximizeBox

False

MinimizeBox

False

Size

330, 150

在窗体之上添加一个Timer 控件,命名为tmrAutoClosed ;再添加一个Label ,命名为lblShowTip ,还要将ShowInTaskbar属性设为false,这样这个对话框就不会在任务栏中显示了,其他属性保持默认值。

     另外,在AutoClosedMessageBox窗体中添加一个Label控件,将它的AutoSize属性设置为true。

在窗体AutoClosedMessageBox 的设计器界面下,按F7 查看代码,首先在类中添加一个AutoClosedMessageBox 类型的静态成员ACMessageBox ,用来保存对话框实例;同时再创建一个静态的Show 方法,在方法中控制信息的呈现,详见代码:

public static void Show(string text, string caption, int newlineCount, int milliseconds) { string formattedText = ""; ACMessageBox = new AutoClosedMessageBox(); //创建一个实例 ACMessageBox.Text = caption; //Caption参数用来设置对话框的标题 ACMessageBox.tmrAutoClosed.Interval = milliseconds; //用来控制定时器的触发时间间隔 //控制要显示的文本的长度,由参数newlineCount来设置 if (text.Length > newlineCount) { for (int position = 0; position < text.Length; position += newlineCount) { if (text.Length - position > newlineCount) { formattedText += text.Substring(position, newlineCount); formattedText += "/n"; } else { formattedText += text.Substring(position); } } } ACMessageBox.lblShowTip.Text = formattedText; //将处理后的内容赋给Label的Text属性 ACMessageBox.lblShowTip.TextAlign = ContentAlignment.MiddleCenter; //设置信息在Label空间中的位置 //使Label控件显示在对话框的中央位置 x = (ACMessageBox.Width - ACMessageBox.lblShowTip.Width) / 2; y = (ACMessageBox.Height - ACMessageBox.lblShowTip.Height) / 3; ACMessageBox.lblShowTip.Location = new Point(x, y); //使对话框显示在屏幕的中央位置 ACMessageBox.CenterToScreen(); ACMessageBox.tmrAutoClosed.Enabled = true; //开启定时器 ACMessageBox.ShowDialog(); //显示对话框。 }

tmrAutoClosedTick 事件处理程序中添加以下代码:

      ACMessageBox.Close(); //关闭对话框 ACMessageBox.tmrAutoClosed.Enabled = false; //关闭定时器

然后在主窗体的btnShowDialog 按钮的Click 事件处理程序中进行对可定时关闭对话框的调用:

 AutoClosedMessageBox.Show(" 通过窗体模拟的方式创建一个可以定义关闭时间的自动对话框,无需用户点击确定。", " 提示", 15, 2000);

      我在这里仅仅用窗体来简单地模拟了一个可定时关闭的对话框,可以像使用MessageBox 类一样来使用这个AutoClosedMessageBox 以及它的Show 方法,大家还可以自己扩展或重载这个方法,比如提供选择要显式的提示图标的类型的参数(可以通过PictureBox 控件来实现)。来看一下截图:创建一个可定时自动关闭的MessageBox_第1张图片

   

大家可以在此处下载源代码 :  可定时自动关闭的对话框

 

你可能感兴趣的:(timer,String,api,扩展,任务)