2012-11-26 37 views
-1

我有奇怪的情况与用户控件只包含一个文本框(输入数字)。
例如在“编辑状态”中,我的文本是未格式化的并左对齐,但在离开控制后,我希望将同一文本格式化并右对齐。 对于我使用的代码在文本框的“离开”事件处理程序:刷新usercontrol离开/ lostfocus

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处理程序,则会发生同样的情况。

有什么想法在这里做什么?编辑:
毕竟,我找到了一个解决方案。
技巧是使用textbox_Enter输入和textbox_LostFocus退出。
这样的事件对在退出时设置文本框的对齐方式不会引发textbox_Enter。

+0

您使用的控制盒退出控制?可能不是你要找的东西,但是你可以在表格上放一个'OK'按钮吗? – PatFromCanada

+0

嗨,帕特,我不使用控制箱,那种方式不适合我的需要。与VB6中的相同的usercontrols行为完全不同。 –

回答

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 

...类似的规定,从保持在进入同样的功能停止。

希望这是有道理

+0

嗨,约翰,我想你的建议,但问题是我需要在_Leave下的代码在“_Leave”发生时执行。并且该代码再次输入文本框并禁止用户控制退出。 –

+0

你可以发布多一点的代码?也许你'RefreshText()'这样我就可以真正看到你的问题是什么,因为给你贴什么,我不能重新创建来解决它的问题... –