如何将闪烁光标设置为WPF可编辑组合框?

时间:2017-09-14 19:49:24

标签: c# wpf combobox setfocus

在我的WPF程序中,我有一个标准的ComboBox(可编辑)。我希望的行为是FormLoad,我希望用户能够输入ComboBox并从列表中选择。 (在FormLoad我已经用一些字符串填充了它。)所以我设置comboBox.Focus(),因为我有IsTextSearchEnabled="True",这是默认行为,这样可以正常工作。< / p>

我的问题是,当设置comboBox.Focus()时,它确实集中了控件,但我没有在其中获得闪烁的光标。这就是它的样子:

enter image description here

理论上这可以完成工作,但我相信它不是非常用户友好。我希望ComboBox能够被聚焦,并且还有闪烁的光标。

当我点击可编辑的ComboBox时,我得到闪烁的光标,所以当我这样做时,我查找了被触发的事件。原来它PreviewMouseLeftButtonDown,所以我尝试以编程方式触发此事件(虽然这是我通常试图避免的),看看是否可以选择。这是我的代码:

comboBox.RaiseEvent
(
    new MouseButtonEventArgs
    (
        Mouse.PrimaryDevice, 
        Environment.TickCount, 
        MouseButton.Left
    ) 
    { 
        RoutedEvent = PreviewMouseLeftButtonDownEvent 
    }
);

我使用Console.WriteLine()打印一条简单的消息,以便在输出窗口中验证事件是否被触发,事实确实如此。但是,我仍然没有在我的ComboBox中获得闪烁的光标。

然后我查看了SO,发现this question并且OP的编辑修复似乎有效。然而,这看起来似乎是一个非常简单的方法来完成看似简单的任务,所以我想知道是否有一种相当简单或简单的方法可以达到预期的效果。

1 个答案:

答案 0 :(得分:1)

窗口加载后调用Focus()方法似乎对我来说很合适:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
        this.Loaded += (s,e) => comboBox.Focus();
     }
}

如果它不适合您,请提供可重现的问题样本:https://stackoverflow.com/help/mcve