我有一个奇怪的情况,usercontrol只包含一个文本框(输入数字) 例如,在“编辑状态”中,我的文本未格式化并保持左对齐但在离开控件后,我希望格式化并右对齐相同的文本。 为此,我使用文本框的“离开”事件处理程序下的代码:
Private Sub numText_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles numText.Leave
Debug.Print("numText_Leave")
numText.TextAlign = def_Alignment ' right
RefreshText() ' sub for formatting
End Sub
会发生什么? 当程序步入_Leave并设置新的对齐时,numText再次进入并且usercontrol不想退出。如果我评论这些代码usercontrol正常退出但我无法得到所需的文本显示(格式化) 如果我使用numText_LostFocus而不是_Leave处理程序,则会发生同样的情况。
关于在这里做什么的任何想法?
编辑:
毕竟,我找到了解决方案
Trick正在使用textbox_Enter进行输入,使用textbox_LostFocus进行退出
退出时,这样的事件对不会在设置文本框的对齐时引发textbox_Enter。
答案 0 :(得分:0)
......我不确定我是否100%理解你的问题,但是,从我认为我理解的情况来看,我有类似的情况,控制器递归地调用他们的事件。我通常通过创建一个名为DoWork的外部布尔变量来处理它,并执行以下操作:
Dim DoWork as Boolean = True
Private Sub numText_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles numText.Leave
If DoWork then
DoWork = False
Debug.Print("numText_Leave")
NumText.TextAlign = HorizontalAlignment.Right
Refreshtext()
DoWork = True
End Sub
......按照这些方式排除,以阻止它继续进入相同的功能。
希望这是有道理的