Sub SetLabel()
Dim II As Integer
For II = 0 To 41
DateLabel(II) = New Label
Me.Controls.Add(DateLabel(II))
With DateLabel(II)
.TextAlign = ContentAlignment.MiddleCenter
.BackColor = Color.White
.AutoSize = False
.Size = New Size(29, 17)
.Top = 49 + (II \ 7) * 21
.Left = 5 + (II Mod 7) * 33
.Text = II + 1
.BringToFront()
End With
Next
End Sub1G内存,Vs2005下,40个Label竟然需要1秒钟——因为要做成控件。
这种明显有刷新缓慢的现象,肯定是不成的。
我用——固定模式,事先放上去40个Label,加载同样的慢,应该不是代码的问题。
怎么解决呢?VB下,我自己的控件,一次性上百个,都感觉不到丝毫延迟的
.Net下,怎么解决类似的问题啊?
Dim II As Integer
For II = 0 To 41
DateLabel(II) = New Label
Me.Controls.Add(DateLabel(II))
With DateLabel(II)
.TextAlign = ContentAlignment.MiddleCenter
.BackColor = Color.White
.AutoSize = False
.Size = New Size(29, 17)
.Top = 49 + (II \ 7) * 21
.Left = 5 + (II Mod 7) * 33
.Text = II + 1
.BringToFront()
End With
Next
End Sub1G内存,Vs2005下,40个Label竟然需要1秒钟——因为要做成控件。
这种明显有刷新缓慢的现象,肯定是不成的。
我用——固定模式,事先放上去40个Label,加载同样的慢,应该不是代码的问题。
怎么解决呢?VB下,我自己的控件,一次性上百个,都感觉不到丝毫延迟的
.Net下,怎么解决类似的问题啊?
解决方案 »
- 关于ScrollBar的问题?
- winform里如何调用javascrip里的方法?求救
- 如何获取windows 服务运行的当前目录?
- c#读取EXCEL错误
- 菜鸟求一算法,关于棋牌游戏的
- 怎么使得继承自CollectionBase的Items在设计时的内容持久?
- 关于RegistryKey的小问题
- Convert.Int32(string)和Int32.parse(string)有什么区别?(没分郁闷中...)
- 数组问题,高难度
- C#中怎样把8位的灰度图变成10位的?
- 程序启动后自动最小化到系统托盘,同时开线程监听socket,当用户关闭计算机时,系统无反映,只有退出程序才能关闭系统,请问怎样才能使程
- 一个头痛的打印问题,高分求解,急!!!
在 进入 For 前
Me.Controls.SuspendLayout();
然后再 For
循环完全 End 后
家
Me.Controls.ResumeLayout();应该可以大大提高显示性能写个耗用时间语句对比一下
不好意思
应该是
Me.SuspendLayout() 和 Me.ResumeLayout()
刚刚多写了个 Controls
Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Create string to draw.
Dim drawString As String
Dim drawFont As Font = Font
Dim drawBrush As New SolidBrush(Color.Black)
Dim i As Integer
Dim drawRect As RectangleF
Dim drawFormat As New StringFormat
drawFormat.Alignment = StringAlignment.Center
drawFormat.LineAlignment = StringAlignment.Center
For i = 0 To 41
drawString = i + 1
drawRect = New RectangleF(5 + (i Mod 7) * 33, 49 + (i \ 7) * 21, 29.0F, 17.0F) e.Graphics.FillRectangle(Brushes.White, 5 + (i Mod 7) * 33, 49 + (i \ 7) * 21, 29, 17) e.Graphics.DrawString(drawString, drawFont, drawBrush, drawRect, drawFormat)
Next
End Sub
再把
Me的Visible先设false
最后恢复true
也是不行的,还是闪动的
回头补一下~~