7

ダイヤルパッドとして3つのテキストボックスとボタンを備えたwinアプリフォームがあります(これはタッチスクリーンアプリです)...

ダイヤルパッドボタンが押されたときに、これら3つのテキストボックスのどれにフォーカスがあるかを確認し、それにテキストを追加したいと思います。

何かのようなもの:

if (tbx1.Focused == true)
{
   tbx1.Text += "0";
}
else if (tbx2.Focused == true)
{
   tbx2.Text += "0";
}
else
{
   tbx3.Text += "0";
}

しかし、これは機能しません...それは常にtbx3にテキストを追加します。助言がありますか?

ありがとう :)

4

1 に答える 1

15

ボタンをクリックすると問題が発生します。ボタンはフォーカスを取得し、テキストボックスは取得しません。

できることは、LostFocusイベントをサブスクライブして、最後にフォーカスされたテキストボックスを覚えておくことです。

何かのようなもの:

private TextBox lastFocused;
private void load(object sender, EventArgs e){
    foreach (TextBox box in new TextBox[] { txtBox1, txtBox2, txtBox3 }){
        box.LostFocus += textBoxFocusLost;
    }
}

private void textBoxFocusLost(object sender, EventArgs e){
    lastFocused = (TextBox)sender;
}
于 2012-08-17T11:44:01.483 に答える