提示 延时自动关闭
发布时间:2020-12-17 07:39:28 所属栏目:百科 来源:网络整理
导读:分享自己做的一个简单的提示方法,主要用于用户操作反馈,当然啦 !没有messagebox和msgbox那么多功能 ''' summary ''' para绘制居中显示的提示/para ''' /summary ''' param name="parentCtl"父容器/param ''' param name="drawString"提示文字/param ''' p
分享自己做的一个简单的提示方法,主要用于用户操作反馈,当然啦 !没有messagebox和msgbox那么多功能 ''' <summary> ''' <para>绘制居中显示的提示</para> ''' </summary> ''' <param name="parentCtl">父容器</param> ''' <param name="drawString">提示文字</param> ''' <param name="closeMillisecond">延时关闭时间,单位毫秒</param> ''' <param name="operateSucceed">操作是否成功(默认成功) ''' <para>操作成功——绿底白字(淡绿色)</para> ''' <para>操作失败——红底白字(淡珊瑚色)</para> </param> Public Sub DrawTips(ByVal parentCtl As Control,ByVal drawString As String,ByVal closeMillisecond As Integer,Optional ByVal operateSucceed As Boolean = True) '线程安全操作 创建lbl必须要在invoke里面 否则parentCtl就操作不了 其他线程创建的控件 parentCtl.Invoke(New Action( Sub() Dim lbl As Label = New Label Dim g As Graphics = lbl.CreateGraphics Dim font As New Font("微软雅黑",20) '测量字体宽度 Dim sizeOfString As SizeF = g.MeasureString(drawString,font) g.Dispose() parentCtl.SuspendLayout() lbl.AutoSize = True '根据传入的 操作结果 选择 提示底色 If operateSucceed = True Then lbl.BackColor = Color.LightGreen Else lbl.BackColor = Color.LightCoral End If '动态添加 并设置标签属性 lbl.Font = font lbl.ForeColor = Color.White '居父容器中显示 lbl.Location = New Point(Convert.ToInt32(parentCtl.Size.Width / 2 - sizeOfString.Width / 2),Convert.ToInt32(parentCtl.Size.Height / 2 - sizeOfString.Height / 2)) lbl.Name = "drawTips" lbl.Text = drawString '添加到窗体 parentCtl.Controls.Add(lbl) '置顶功能必须是添加控件到窗体之后 才能设置 lbl.BringToFront() parentCtl.ResumeLayout() parentCtl.Refresh() '几秒后卸载标签 Dim thread3 As New Threading.Thread( Sub() '如果父容器已经关闭,再执行下面的操作会引发异常 Try Threading.Thread.Sleep(closeMillisecond) '线程安全操作 parentCtl.Invoke( Sub() parentCtl.Controls.Remove(lbl) lbl.Dispose() End Sub) Catch ex As Exception ' End Try End Sub) thread3.Start() End Sub)) #Region "旧(不可置顶 弃用2016 04 30)" 'Dim g As Graphics = parentCtl.CreateGraphics 'Dim brush As New SolidBrush(Color.White) ''根据传入的 操作结果 选择 提示底色 'Dim pen As Pen 'If operateSucceed = True Then ' pen = New Pen(Color.LightGreen,sizeOfString.Height) 'Else ' pen = New Pen(Color.LightCoral,sizeOfString.Height) 'End If 'g.Clear(parentCtl.BackColor) ''画线当做底色 'g.DrawLine(pen,New Point(Convert.ToInt32(parentCtl.Size.Width / 2 - sizeOfString.Width / 2),Convert.ToInt32(parentCtl.Size.Height / 2)),New Point(Convert.ToInt32(parentCtl.Size.Width / 2 + sizeOfString.Width / 2),Convert.ToInt32(parentCtl.Size.Height / 2))) ''画字 'g.DrawString(drawString,New Font("微软雅黑",20),brush,New PointF(Convert.ToSingle(parentCtl.Size.Width / 2 - sizeOfString.Width / 2),Convert.ToSingle(parentCtl.Size.Height / 2 - sizeOfString.Height / 2))) ''Thread.Sleep(3000) ''g.Clear(parentCtl.BackColor) 'g.Dispose() #End Region End Sub 效果: 操作出错提示
操作成功提示
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- configure: error: xml2-config not found. Please check y
- c# – 内置.NET函数来解码XML流中的字符?
- c# – 在表达式树中,如何使用需要与结果进行比较的表达式,例
- 15个nosql数据库
- ruby-on-rails – Rails 4迁移:Mysql2 ::错误:列’xxxx’
- C# 文件操作函数 创建文件 判断存在
- ruby-on-rails – 在Spree(RoR)中保存产品时价格乘以100
- c – “%include”和“#include”之间的差异
- 设计模式-OOD的设计原则(5)-"合成聚合复用原则"
- cocos2d-x getVisibleSize、getContentSize、getWinSize函数