0

this.Controls以下は、Windows フォーム アプリケーションのコードの一部です。使用できないことを考慮して、WPF に変換するにはどうすればよいですか。

public Form1()
        {
            InitializeComponent();
            foreach (TextBox tb in this.Controls.OfType<TextBox>())
            {
                tb.Enter += textBox_Enter;
            }
        }

        void textBox_Enter(object sender, EventArgs e)
        {
            focusedTextbox = (TextBox)sender;
        }

private TextBox focusedTextbox = null;

private void button1_Click (object sender, EventArgs e)
        {
            if (focusedTextbox != null)
            {
                focusedTextbox.Text += "1";

            }
        }
4

1 に答える 1

0

PreviewGotKeyboardFocusルート要素 (ほとんどの場合 Window 自体) をリッスンし、e.NewFocus引数を記録します。プレビュー イベントはビジュアル ツリーをバブルアップするため、親コントロール内でプレビュー イベントを公開するすべてのコントロールがそれをトリガーします (「ルーティング イベント」を参照)。

イベント ハンドラは次のようになります。

    private void OnGotFocusHandler(object sender, KeyboardFocusChangedEventArgs e)
    {
        var possiblyFocusedTextbox = e.NewFocus as TextBox;
        //since we are now receiving all focus changes, the possible textbox could be null
        if (possiblyFocusedTextbox != null)
            focusedTextbox = possiblyFocusedTextbox;
    }
于 2012-11-25T04:51:16.170 に答える