Vb.net 如何:强制用户在从winform中选择内容之前对其进行聚焦
我正在处理一个使用WinForms的项目,当用户在Vb.net 如何:强制用户在从winform中选择内容之前对其进行聚焦,vb.net,winforms,Vb.net,Winforms,我正在处理一个使用WinForms的项目,当用户在窗体上单击控件而该窗体不是活动窗口时,我遇到了并发问题。每当用户激活我的表单以防止它们显示旧/脏信息时,我的表单都会刷新,但如果他们单击非活动表单上的按钮,则数据不会刷新,这可能会导致问题 我知道windows中的某些程序会强制您在执行任何其他操作之前选择窗口,在我的VB.NET程序中是否有这样做的方法?此代码在我的测试中运行,但必须处理一些问题才能按需运行: Dim mystts As Boolean = False Private Sub
窗体
上单击控件而该窗体不是活动窗口时,我遇到了并发问题。每当用户激活我的表单以防止它们显示旧/脏信息时,我的表单都会刷新,但如果他们单击非活动表单上的按钮,则数据不会刷新,这可能会导致问题
我知道windows中的某些程序会强制您在执行任何其他操作之前选择窗口,在我的VB.NET程序中是否有这样做的方法?此代码在我的测试中运行,但必须处理一些问题才能按需运行:
Dim mystts As Boolean = False
Private Sub Form2_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
'here your process, unfortunately this will be performed too after messagebox close back to form2
'for example the process are:
For myCnt As Integer = 1 To 4000
Debug.Print("Test") 'This only for waiting
Next
mystts = False
End Sub
Private Sub Form2_Deactivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Deactivate
'we must define the other criteria for make mystts=true, for example if
'we call messageBox.show, we can pass out from this for example we have msgFlag
'before call messageBox set msgFlag=true and after it set msgFlag=false
'and here you add: if msgFlag=true then exit sub
mystts = True
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'if we click this button and myStts=true, the next process will wait until process in form activate finish
MsgBox("this My Process, run after form2 activated and process finish")
End Sub
它没有机会刷新数据
-为什么?当它的按钮被点击时,它会激活,不是吗?你有一些异步处理吗?因此,当有人点击某个东西时,异步的东西还没有完成,你会得到异常/错误行为?你可以设置变量状态,并在刷新任何东西时将其设置为真,完成后将状态设置为假。在你的按钮点击中,如果状态是真的,什么也不做,但是如果状态是假的,按正常的方式执行它非常模糊,听起来像按钮的点击事件在做一些非常顽皮的事情。比如挂起主线程的时间太长,没有足够的并发性。用户输入总是在任何挂起的重新绘制之前处理。将Me.Update()作为事件处理程序中的第一条语句,以便在代码消失之前重新绘制。