0
我试图展示我的窗体,然后加载我的数据(有点慢)。 即使仅在onShown方法上调用我的加载数据方法,我的屏幕仍保持白色,直到加载所有数据。 .NET Windows窗体事件序列
然后我把:
Thread.Sleep(100000)
在我onShown()方法,可以注意到,当onShown触发我的控件不加载(可见)。
是否有任何事件仅在所有表单控件加载并可见时才引发?
Tksss ...
我试图展示我的窗体,然后加载我的数据(有点慢)。 即使仅在onShown方法上调用我的加载数据方法,我的屏幕仍保持白色,直到加载所有数据。 .NET Windows窗体事件序列
然后我把:
Thread.Sleep(100000)
在我onShown()方法,可以注意到,当onShown触发我的控件不加载(可见)。
是否有任何事件仅在所有表单控件加载并可见时才引发?
Tksss ...
请勿使用线程。它会冻结你的窗户。
解决这些类型的延迟负荷的最佳方法是使用 System.Windows.Threading.DispatcherTimer
循序渐进:
第一步:
首先添加引用WindowsBase
DLL到您的项目。
右键单击项目 - >添加引用。在.Net选项卡上选择WindowsBase
并添加。
第二步:
在表单代码导入Imports System.Windows.threading
第三步:
为DispatcherTimer
Private dispatcherTimer As System.Windows.Threading.DispatcherTimer
创建形式的私人对象
步骤4:
在形式 “Onshown” 事件创建DispatcherTimer
对象并设定为2秒(实施例)的时间间隔。
Private Sub Form1_Shown(sender As System.Object, e As System.EventArgs) Handles MyBase.Shown
'CREATE DISPATCHER OBJECT
dispatcherTimer = New System.Windows.Threading.DispatcherTimer()
'ADD THE METHOD TO BE HANDLED AFTER SPECIFIED INTERVAL
AddHandler dispatcherTimer.Tick, AddressOf dispatcherTimer_Tick
'SET YOUR INTERVAL (set 2 sec for example)
dispatcherTimer.Interval = New TimeSpan(0, 0, 2)
'START THE TIMER.
dispatcherTimer.Start()
End Sub
而在方法dispatcherTimer_Tick
加载表单控件(处理程序在上述方法中添加的)
Public Sub dispatcherTimer_Tick()
Try
TextBox1.Text = "example"
TextBox2.Text = "example"
TextBox3.Text = "example"
TextBox4.Text = "example"
'CALL STOP TO THE TIMER SO THAT THE "dispatcherTimer_Tick" WONT GET CALLED REPEATEDLY.
dispatcherTimer.Stop()
Catch ex As Exception
End Try
End Sub