2012-11-26 2 views
-1

하나의 텍스트 상자 (입력 번호) 만 포함하는 usercontrol에서 이상한 상황이 있습니다.
예를 들어 "편집 상태"에서 텍스트는 서식이 지정되지 않고 왼쪽으로 정렬되지만 컨트롤을 벗어난 후에는 같은 텍스트를 서식을 지정하고 오른쪽 정렬하고 싶습니다.leave/lostfocus에서 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 정상적으로 종료 언급하지만 원하는 텍스트를 표시 할 수 없습니다 (서식).
_Leave 핸들러 대신 numText_LostFocus를 사용하면 같은 결과가 발생합니다.

여기서 무엇을해야할까요?

편집 :
결국 해결책을 찾았습니다.
트릭은 입력을 위해 textbox_Enter를 사용하고 종료하려면 textbox_LostFocus를 사용 중입니다.
이러한 이벤트 쌍은 textbox_를 발생시키지 않습니다. 종료 할 때 텍스트 상자의 맞춤 설정을 입력하십시오.

+0

당신이 컨트롤을 종료하기 위해 컨트롤 박스를 사용하고 무엇입니까? 아마도 당신이 찾고있는 것이 아니지만 양식에 'OK'버튼을 넣을 수 있습니까? – PatFromCanada

+0

안녕하세요 Pat, 컨트롤 상자를 사용하지 않아서 그런 식으로 내 요구에 맞지 않습니다. 완전히 다른 동작을 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

안녕하세요, 존, 나는 당신의 제안을 undestand하지만 문제는 "_Leave"가 발생했을 때 실행되도록 _Leave 아래의 코드가 필요하다는 것입니다. 그리고 그 코드는 textbox에 다시 들어가고 usercontrol이 종료하는 것을 금지합니다. –

+0

좀 더 많은 코드를 게시 할 수 있습니까? 어쩌면 당신의'RefreshText()'가 당신이 게시 한 것을 볼 수 있기 때문에 당신의 문제가 무엇인지 알 수있게 해줍니다. 문제를 해결하기 위해 다시 만들 수는 없습니다 ... –

관련 문제