【问题标题】:How do I get a DatePicker to only accept numeric input in WPF?如何让 DatePicker 只接受 WPF 中的数字输入?
【发布时间】:2016-01-04 09:44:05
【问题描述】:

我有以下DatePicker控制:

<Grid x:Name="LayoutRoot" Background="White">
       <DatePicker Margin="2" Grid.Column="1" VerticalAlignment="Center"/>
</Grid>

是否可以只允许用户设置数字输入?或者在无法实现的情况下如何禁用文本框输入

【问题讨论】:

标签: c# wpf datepicker


【解决方案1】:

此代码只允许在 DatePicker 中输入数值

XAML:

<DatePicker Margin="2" Grid.Column="1"
            PreviewTextInput="phoneNumber_PreviewTextInput" 
            VerticalAlignment="Center"/>

后面的代码

private void phoneNumber_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    char character = Convert.ToChar(e.Text);
    if (char.IsNumber(character))
    {
        e.Handled = false;
    }
    else
    {
        e.Handled = true;
    }
}

【讨论】:

    【解决方案2】:

    试试这个:

     <DatePicker Margin="2" Grid.Column="1" VerticalAlignment="Center">
                <DatePicker.Resources>
                    <Style TargetType="DatePickerTextBox">
                        <Setter Property="IsReadOnly" Value="True"/>
                    </Style>
                </DatePicker.Resources>
            </DatePicker>
    </Grid>
    

    【讨论】:

      【解决方案3】:

      其实我很感谢你的回答,我真的很喜欢他们,但我想要我找到的解决方案,事实上我使用了Regex,下面是使用的代码:

      private bool IsTextAllowed(string text)
      {
           Regex regex = new Regex("[^0-9/]+"); 
           return !regex.IsMatch(text);
      }
      
      private void DatePicker_PreviewTextInput(object sender, TextCompositionEventArgs e)
      {
           e.Handled = !IsTextAllowed(e.Text);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-09
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 2017-06-11
        • 2014-03-26
        相关资源
        最近更新 更多