【问题标题】:uwp xaml - Set custom input format to textboxuwp xaml - 将自定义输入格式设置为文本框
【发布时间】:2018-06-10 18:28:21
【问题描述】:

是否可以(简单地)在文本框上获得特定格式?像这样

所以我有这样的 xaml 代码:

<TextBox Grid.Column="1" PlaceholderText="100" Height="52" Width="80" VerticalAlignment="Center" FontSize="25" />

但我想有一个格式。所以它不能被错误的数据填充。

所以一个输入字段只能是ints,另一个必须是格式00:00所以0是0-9之间的一个整数,然后它必须自动添加:并允许另外两个整数.

这可能吗?如何实现?

【问题讨论】:

标签: c# xaml uwp


【解决方案1】:

我在 SO 中等待关于 UWP 的好问题,我有一些可能有用的东西 --

XAML

<TextBox Name="MyTextBox" PlaceholderText="00:00" Height="52" Width="80" VerticalAlignment="Center" FontSize="25" MaxLength="5" KeyDown="TextBox_KeyDown" TextChanged="TextBox_TextChanged"/>

C#

bool m_BackPressed = false; // It is because if user pres back button then it will remove ":" sign else it will never removed

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
    m_BackPressed = (e.Key.ToString().Equals("Back")) ? true : false;

    if (e.Key.ToString().Equals("Back"))
    {
        e.Handled = false;
        return;
        m_BackPressed = true;
    }
    for (int i = 0; i < 10; i++)
    {
        if (e.Key.ToString() == string.Format("Number{0}", i) || e.Key.ToString() == string.Format("NumberPad{0}", i))
        {
            e.Handled = false;
            return;
        }
    }            
    e.Handled = true;
}        

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    if (MyTextBox.Text.Length == 2 && m_BackPressed != true)
    {
        MyTextBox.Text += ":";
        MyTextBox.Select(MyTextBox.Text.Length, 0);                
    }            
}

输出

【讨论】:

  • 太棒了!正是我需要的!
  • 是否也可以“限制”数字的数量? (比如假设xx:xx,这是您可以插入的最大字符数?
  • @Robin 看起来你没有复制我的 xaml 代码我已经将字符数限制为 5 inc。那:符号?
  • @Robin 你在 xaml 中获得了 MaxLength 属性吗?
猜你喜欢
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 2016-11-06
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多