【问题标题】:Select ComboBox Text选择组合框文本
【发布时间】:2013-11-01 14:21:28
【问题描述】:

我有一个 ComboBox 声明如下:

<ComboBox Name="txtUserName" IsEditable="True" />

我想选择 ComboBox 的文本字段作为焦点,但我不知道该怎么做。目前,当 ComboBox 以编程方式聚焦时(通过“txtUserName.Focus()”),它允许用户滚动浏览不同的项目,但需要额外单击以突出显示文本字段。

有什么想法吗?

【问题讨论】:

  • 这可能是 ComboBox 默认处理焦点的方式。如果你想改变这一点,你必须更深入。有一些类似的问题,它们可能有用:question onequestion two
  • 什么意思?当我使用箭头滚动时,它会突出显示。
  • 在您的第一个链接@icebat 中找到了解决方案

标签: c# wpf combobox


【解决方案1】:

我使用的解决方案是在窗口的加载事件中添加以下代码:

var textBox = (txtUserName.Template.FindName("PART_EditableTextBox", txtUserName) as TextBox);
if (textBox != null)
{
      textBox.Focus();
      textBox.SelectionStart = textBox.Text.Length;
 }

解决方案来自此处的建议答案之一:How to add a focus to an editable ComboBox in WPF

【讨论】:

    【解决方案2】:

    试试这个:

    if (txtUserName.Items.Count > 0)
    {
        txtUserName.SelectedIndex = 0;
    }
    

    此外,您可能希望使用不同的前缀,例如“cbo”。 代码的其他读者会认为它是一个文本框,而不是一个组合框。

    【讨论】:

      【解决方案3】:

      尝试像这样添加组合框模板:

      <ComboBox Name="txtUserName" IsEditable="True">
              <ComboBox.Template>
                <ControlTemplate>
                    <TextBox Text="{Binding Path=/*your property*/}"/>
                 </ControlTemplate>
               </ComboBox.Template>
       </ComboBox>
      

      【讨论】:

        猜你喜欢
        • 2013-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多