2012-11-26 71 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()'這樣我就可以真正看到你的問題是什麼,因爲給你貼什麼,我不能重新創建來解決它的問題... –