2013-08-21 2 views
-2

나는 눌렀을 때 다른 텍스트 상자에 숫자를 표시하는 숫자 버튼이 있습니다. 이제 내 문제는 어떤 텍스트 상자에 포커스가 있는지 확인하여 해당 숫자가 해당 텍스트 상자에 입력되도록하는 것입니다. 내 코드 :C# Winforms에 포커스가있는 텍스트 상자 값 설정

private void btn_one_Click(object sender, EventArgs e) 
{ 
    if (txt_one.Focused==true) 
    { 
     txt_one.Text += btn_one.Text; 
    } 
    else if (txt_two.Focused==true) 
    { 
     txt_two.Text += btn_one.Text; 
    } 
} 

이제 내 문제는 위의 코드는 무엇이 잘못되었는지 작동하지 않으며 무엇 해결책이 될 것입니다? 심지어 이와 비슷한 것을 사용했습니다.

private void btn_one_Click(object sender, EventArgs e) 
{ 
    if (txt_one.Focus()==true) 
    { 
     txt_one.Text += btn_one.Text; 
    } 
    else if (txt_two.Focus()=true) 
    { 
     txt_two.Text += btn_one.Text; 
    } 
} 

위의 두 경우 모두 텍스트는 텍스트 상자에 입력됩니다. 모든 솔루션.

+1

당신은 정말 질문을하지 않았다. 작동하지 않는 것이 있습니까? – xdumaine

+0

양식의 스크린 샷과 실제 질문은 도움이 될 것입니다 –

+0

작품보기 .. 포인트를 얻을 수 없습니다. –

답변

2

이 문제가 조금 까다 롭습니다 (Enter, Focus, LostFocus, Leave 사건을 다루는 나의 경험, 모든 일이 가끔 머리가 많이 아파하고 당신이 그들을 가능하면 처리하지 않도록해야합니다), 시간에 당신은 당신의 Button, 전류를 클릭 Focused 알 수있는 컨트롤은 정확히 Button입니다 (ActiveControl). 따라서 해결 방법은 초점이 맞춰진 트랙 TextBox을 기록해야하고 참조 할 때 필요할 때 사용하십시오. 당신의 TextBoxes 중 하나 이외의 제어에 초점이 맞춰 경우 사실, 우리는 null로 변수 lastFocused을 재설정해야 :

TextBox lastFocused; 
//Enter event handler for all your TextBoxes 
private void TextBoxes_Enter(object sender, EventArgs e){ 
    lastFocused = sender as TextBox; 
} 
//Click event handler for your button 
private void btn_one_Click(object sender, EventArgs e){ 
    if(lastFocused != null) lastFocused.Text += btn_one.Text; 
} 
+0

@ King King에게 감사 드려서 위의 코드가 작동하지 않습니다. – ROM

+0

@ROM ** 모든 ** 텍스트 상자에 대해'Enter' 이벤트 핸들러를 등록하는 법을 알고 있습니까? –

+0

죄송합니다. 킹 킹 씨, 지금 일하고 있습니다. 감사합니다. 천 선생님. – ROM

관련 문제