-2

押すと別のテキストボックスに数字が表示される数字ボタンがあります。今私の問題は、押された数字がそのテキストボックスに入力されるように、どのテキストボックスにフォーカスがあるかを確認したいということです。私のコード:

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;
    }
}

上記のどちらの場合でも、テキストは両方のテキスト ボックスに入力されます。任意のソリューション。

4

1 に答える 1

3

この問題は少しトリッキーです (イベントを扱った私の経験ではEnter, Focus, LostFocus, Leave、これらすべてのことで頭が痛くなることもあり、可能であれば対処しないようにする必要がありますButton) FocusedButton(ActiveControlはそれにアクセスする簡単な方法の 1 つです) 。したがって、解決策は、 focusd のトラックを記録し、TextBoxそれを参照に保持し、必要に応じて使用する必要があります。実際、自分以外のコントロールTextBoxesがフォーカスされている場合は、変数lastFocusedを nullにリセットする必要があります。

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;
}
于 2013-08-21T17:59:35.440 に答える