2

テキスト ボックスである最初の ListBox 項目にフォーカスを設定したいと考えています。クリックしたりキーを押したりしなくても、すぐに書き込めるようにしたいのです。私はこれを試してみましたが、うまくいきません:

        private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        listBox1.Items.Add(new TextBox() { });
        (listBox1.Items[0] as TextBox).Focus();

    }
4

2 に答える 2

4

ばかげていますが、少し待った場合にのみ機能します。このバージョンを試してください。

using System;
using System.Windows;
using System.Windows.Controls;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            var textBox = new TextBox() {};
            listBox1.Items.Add(textBox);

            System.Threading.ThreadPool.QueueUserWorkItem(
                (a) =>
                {
                    System.Threading.Thread.Sleep(100);
                    textBox.Dispatcher.Invoke(
                        System.Windows.Threading.DispatcherPriority.Normal,
                        new Action(
                            delegate()
                            {
                                textBox.Focus();
                            }
                            ));
                }
                );
        }
    }
}

私はローカルでテストしていて、この質問とfuzquatの答えがそこにあるのを見つけるまで修正できなかったので、ここで私と彼を投票してください:D

UserControlの子にフォーカスを設定できません

于 2011-09-22T20:37:58.847 に答える