提示 延时自动关闭

前端之家收集整理的这篇文章主要介绍了提示 延时自动关闭前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

分享自己做的一个简单的提示方法,主要用于用户操作反馈,当然啦 !没有messageBox和msgBox那么多功能

  1. ''' <summary>
  2. ''' <para>绘制居中显示提示</para>
  3. ''' </summary>
  4. ''' <param name="parentCtl">父容器</param>
  5. ''' <param name="drawString">提示文字</param>
  6. ''' <param name="closeMillisecond">延时关闭时间,单位毫秒</param>
  7. ''' <param name="operateSucceed">操作是否成功(默认成功)
  8. ''' <para>操作成功——绿底白字(淡绿色)</para>
  9. ''' <para>操作失败——红底白字(淡珊瑚色)</para> </param>
  10. Public Sub DrawTips(ByVal parentCtl As Control,ByVal drawString As String,ByVal closeMillisecond As Integer,Optional ByVal operateSucceed As Boolean = True)
  11. '线程安全操作 创建lbl必须要在invoke里面 否则parentCtl就操作不了 其他线程创建的控件
  12. parentCtl.Invoke(New Action(
  13. Sub()
  14. Dim lbl As Label = New Label
  15. Dim g As Graphics = lbl.CreateGraphics
  16. Dim font As New Font("微软雅黑",20)
  17. '测量字体宽度
  18. Dim sizeOfString As SizeF = g.MeasureString(drawString,font)
  19. g.Dispose()
  20.  
  21.  
  22. parentCtl.SuspendLayout()
  23. lbl.AutoSize = True
  24. '根据传入的 操作结果 选择 提示底色
  25. If operateSucceed = True Then
  26. lbl.BackColor = Color.LightGreen
  27. Else
  28. lbl.BackColor = Color.LightCoral
  29. End If
  30. '动态添加 并设置标签属性
  31. lbl.Font = font
  32. lbl.ForeColor = Color.White
  33. '居父容器中显示
  34. lbl.Location = New Point(Convert.ToInt32(parentCtl.Size.Width / 2 - sizeOfString.Width / 2),Convert.ToInt32(parentCtl.Size.Height / 2 - sizeOfString.Height / 2))
  35. lbl.Name = "drawTips"
  36. lbl.Text = drawString
  37.  
  38.  
  39. '添加到窗体
  40. parentCtl.Controls.Add(lbl)
  41. '置顶功能必须是添加控件到窗体之后 才能设置
  42. lbl.BringToFront()
  43. parentCtl.ResumeLayout()
  44. parentCtl.Refresh()
  45.  
  46.  
  47. '几秒后卸载标签
  48. Dim thread3 As New Threading.Thread(
  49. Sub()
  50. '如果父容器已经关闭,再执行下面的操作会引发异常
  51. Try
  52. Threading.Thread.Sleep(closeMillisecond)
  53.  
  54. '线程安全操作
  55. parentCtl.Invoke(
  56. Sub()
  57. parentCtl.Controls.Remove(lbl)
  58. lbl.Dispose()
  59. End Sub)
  60. Catch ex As Exception
  61. '
  62. End Try
  63. End Sub)
  64. thread3.Start()
  65. End Sub))
  66. #Region "旧(不可置顶 弃用2016 04 30)"
  67. 'Dim g As Graphics = parentCtl.CreateGraphics
  68. 'Dim brush As New SolidBrush(Color.White)
  69.  
  70.  
  71. ''根据传入的 操作结果 选择 提示底色
  72. 'Dim pen As Pen
  73. 'If operateSucceed = True Then
  74. ' pen = New Pen(Color.LightGreen,sizeOfString.Height)
  75. 'Else
  76. ' pen = New Pen(Color.LightCoral,sizeOfString.Height)
  77. 'End If
  78. 'g.Clear(parentCtl.BackColor)
  79. ''画线当做底色
  80. '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)))
  81. ''画字
  82. '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)))
  83. ''Thread.Sleep(3000)
  84. ''g.Clear(parentCtl.BackColor)
  85. 'g.Dispose()
  86. #End Region
  87. End Sub

效果

操作出错提示


操作成功提示

猜你在找的VB相关文章