在leave / lostfocus上刷新usercontrol

时间:2012-11-26 10:17:11

标签: vb.net

我有一个奇怪的情况,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。

1 个答案:

答案 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

......按照这些方式排除,以阻止它继续进入相同的功能。

希望这是有道理的