[control]。在表单创建vb.net期间调用的.ValueChanged事件

时间:2012-07-02 12:07:45

标签: vb.net winforms events tcp

我遇到了一个非常令人沮丧的问题,我真的希望有人可以帮助我。我已经创建了一个通过TCP / IP命令控制另一个应用程序的应用程序。 (我对应用程序的功能没有任何问题。)我的程序需要做的一件事就是在我的程序发生变化后立即更新另一个应用程序中不同字段的值。为此,我使用

Sub ControlName_ValueChanged(sender As Object, e As System.EventArgs) Handles _
    ControlName.ValueChanged 

sendData(dataToSend,destination)

End Sub

格式。子例程涉及TCP / IP事务,直到用户在我的应用程序上手动启动它才会启动。我遇到的问题是,当我的启动表单加载时,它会立即调用所有*.ValueChanged子例程,从而有效地锁定我的应用程序。有人可以解释为什么会发生这种情况以及如何阻止它吗?

1 个答案:

答案 0 :(得分:1)

如果要阻止UI阻止,可以使sendData实现使用异步调用(通常在类型上实现为BeginSend / EndSend方法对。

我不确定为什么事件处理程序正在进行此操作(可能是因为在创建对象之后,在注册事件处理程序之后将值设置为某个默认值。)

阻止它的一种方法是在加载表单后手动连接ValueChanged事件处理程序,而不是通过designer.cs文件在设计器中执行。< / p>

或者,有一个suppressEvents bool标志可以打开和关闭,并修改你的方法来听标志:

我不知道这是否是有效的VB,我做C#,但你明白了。

Sub ControlName_ValueChanged(sender As Object, e As System.EventArgs) Handles _
    ControlName.ValueChanged 

If suppressEvents Is True Then Return

sendData(dataToSend,destination)

End Sub