C# 用于UWP的格式化文本框

C# 用于UWP的格式化文本框,c#,visual-studio,uwp,C#,Visual Studio,Uwp,我想知道是否有人对我如何为时间输入(hh:mm:ss)以及以度、分、秒(dd°mm'ss)为单位的坐标设置文本框的格式有任何建议。我很清楚,您可以通过字符串设置字符串的格式。format()方法…这确实为我提供了文本框中所需的布局,但我需要一个控件,该控件锁定了相应的符号,并在用户输入时自动标记这些符号 我一直在寻找一种在C#/UWP中实现这一点的方法,但运气不好,如果有人有任何建议或能为我指出正确的方向,我将不胜感激。UWP社区工具包有一些非常好的控件,很容易集成,其中一个控件非常适合您的用户

我想知道是否有人对我如何为时间输入(hh:mm:ss)以及以度、分、秒(dd°mm'ss)为单位的坐标设置文本框的格式有任何建议。我很清楚,您可以通过字符串设置字符串的格式。format()方法…这确实为我提供了文本框中所需的布局,但我需要一个控件,该控件锁定了相应的符号,并在用户输入时自动标记这些符号


我一直在寻找一种在C#/UWP中实现这一点的方法,但运气不好,如果有人有任何建议或能为我指出正确的方向,我将不胜感激。UWP社区工具包有一些非常好的控件,很容易集成,其中一个控件非常适合您的用户塞纳里奥

你也可以尝试控制,它不是你想要的安静,而是你在继续之前应该检查的东西

如果您在为您的具体需求整合控制方面遇到困难,请联系我们


或者,您可以下载UWP toolkit的示例应用程序,以了解所有可用的控件/工具。()


编辑1: 正如您可能已经注意到的,tab的默认行为是将焦点设置为下一个控件。因此,使用单个控件并不理想,因为按下tab键时,文本框将失去焦点,您需要更新文本并将焦点设置回文本框

相对简单的方法如下:

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="1">
                <StackPanel.BorderBrush>
                    <SolidColorBrush Color="{ThemeResource SystemBaseHighColor}"/>
                </StackPanel.BorderBrush>
                <TextBox x:Name="hour" MaxLength="2" BorderBrush="{x:Null}" VerticalAlignment="Center" HorizontalAlignment="Center" LostFocus="hour_LostFocus"></TextBox>
                <TextBlock Text=":" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
                <TextBox x:Name="minute" MaxLength="2" BorderBrush="{x:Null}" HorizontalAlignment="Center" VerticalAlignment="Center" LostFocus="minute_LostFocus"></TextBox>
                <TextBlock Text=":" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
                <TextBox x:Name="second" MaxLength="2" BorderBrush="{x:Null}" HorizontalAlignment="Center" VerticalAlignment="Center" LostFocus="second_LostFocus"></TextBox>
</StackPanel>

这同样适用于分钟和秒。只是在这些情况下正则表达式会有所不同。

此控件与我要查找的控件非常接近。你知道是否有办法实现文本框内的选项卡功能吗?我的意思是,如果我的用户在小时数部分输入数字1,然后按tab键,他们将被按下to文本框的分钟部分,而不是推送到UWP后续控件。如果使用
textbox Mask
控件,用户将不需要使用tab从小时到分钟部分自动获取。例如,用户只需键入152430,并在用户键入字符时将其格式化为15:24:30ters.我了解控件的工作原理。我的用户可能希望键入1(tab)5243,这样他们会在01:52:43。这就是为什么我问是否有办法将焦点切换到屏蔽文本框中的部分。
private void hour_LostFocus(object sender, RoutedEventArgs e)
{            
            string val = (sender as TextBox).Text;

            Regex regex = new Regex(@"^([0[0-9]|1[0-9]|2[0-3])$");
            Match match = regex.Match(val);

            if (!match.Success)
            {
                //append 0 and other validations
            }            

}