1

如何设置 ComboBox 的输入文本长度?

例如,它不会超过 20 个。

4

4 回答 4

1

我用的是 PreviewKeyDown 事件,很简单+你可以显示警告什么的。
将以下方法注册到您的 ComboBox.PreviewKeyDown += 事件中,
如果用户按空格键,则不会触发 KeyDown 事件。

private void ComboBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (ComboBox.Text.Length > 19) // allow max 20 chars
    {
        if (e.Key != Key.Back) // allow removing chars
        {
            e.Handled = true; // block any additional key press if there is more than allowed max
            System.Media.SystemSounds.Beep.Play(); // optional: beep to let user know he is out of space :)
        }
    }
}
于 2014-12-05T00:41:51.660 回答
1

只是为了让故事完整:

你有两个选择:

  • Combobox 显然包含TextBox在其模板中。您需要找到一种访问 TextBox 的方法,可能是通过Combobox Template并将其设置为MaxLength

  • 您可能将 Combobox.Text 数据绑定到 viewmodel 属性。您可以使用 INotifyDataErrorInfo 在 vi​​ewmodel 中进行验证,甚至可以从 setter 中抛出异常。如果超过最大允许长度,用户将看到错误消息。从用户体验的角度来看,我认为这更好。不幸的是,如果您还没有使用 INotifyDataErrorInfo,那么要让它工作还需要做很多工作。

于 2015-09-21T07:26:27.623 回答
0

组合框类(MSDN)上:

<ComboBox>
  Items
</ComboBox>

输入的长度取决于您放入其中的项目。因此,您不能设置该属性。然而,文本框确实有一个最大长度

<TextBox MaxLength="20">
  Text
</TextBox>
于 2013-07-17T12:32:49.453 回答
-1

我通过XAML找到了一个简单的解决方案。在 ComboBox 资源中,我们可以设置文本框的样式并通过 setter set maxlenth。

<ComboBox Name="comboBox" Width="100" IsEditable="True">
    <ComboBox.Resources>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="MaxLength" Value="yourValue"/>
        </Style>
    </ComboBox.Resources>
</ComboBox>

编辑:这适用于 Actipro ComboBox。对于通常的组合框来完成这项工作,看看这里

于 2013-07-18T09:52:20.810 回答