如何解决C#蒙版文本框从右到左的输入行为?

伊尔凡卡

我使用WinForms遮罩文字框以的格式输入时间hh:mm:ss我的遮罩是99:99:99,我使用right-to-left输入模式。

问题是,当我键入123它时,我希望它输入1:23,但它会这样做:(__:12:3_所以值是12:3x,并且它将x替换为下一个键入的值)。

我怎样做才能使它只向左推文本而不是将整个ss复制mm

编辑:这是一个澄清:我的客户需要输入以下内容来输入时间值:输入
12[Enter]12秒
123[Enter]为1分钟,23秒
1234[Enter]为12分钟,34秒
12345[Enter]为1小时23分,45秒,依此类推...

问题在于,当123在带遮罩的文本框中键入内容,它将移动12minutes字段,而不是仅移至,而1仅将3留在seconds字段内。

编辑2:正如任何使用蒙版文本框的人都知道的那样,将TextAlign设置为Right不能像您期望的那样工作,就像在任何普通文本编辑器中一样。取而代之的是,它只是将整个蒙版放置在控件的右侧,但是仍然以与TextAligh为Left时相同的方式插入值。
这就是为什么我尝试使用RightToLeft的原因。

Tinstaafl

您想要的东西似乎几乎是不可能的。除非您键入冒号以显示分隔符,否则maskedtextbox将如何知道您是要输入1位数字还是2位数字应用于您输入的第一个字段?

我认为,对于您似乎想要DateTimePicker的自定义格式的,效果hh:mm:ss会更好。输入自动从该hours字段开始用户可以输入1位或2位数字,然后冒号和输入将自动移至下一个字段。您还可以选择UpDown按钮,用户可以单击以更改突出显示的字段。

几乎不可能,我的意思是本机行为。通过创建从文本框继承的自定义文本框,您可以执行所需的操作:

public class TimeTextBox : TextBox
{
    public TimeTextBox()
    {
        this.KeyPress += TimeTextBox_KeyPress;
    }
    public DateTime timeValue = new DateTime();
    private void TimeTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = true;
        if(char.IsDigit(e.KeyChar))
        {
            Text += e.KeyChar;
            SelectionStart = Text.Length;
        }
        else
        {
            MessageBox.Show("Wrong input");
            return;
        }
        FixText();
        if(Text.Length > 3  && !DateTime.TryParse(Text, out timeValue))
        {
            MessageBox.Show("Wrong input");
            Text = Text.Remove(Text.Length - 1);
            FixText();
            timeValue = DateTime.Parse(Text);
        }
    }
    private void FixText()
    {
        Text = Text.Replace(":", "");
        for(int i = Text.Length - 3; i > -1; i -= 2)
        {
            Text = Text.Insert(i + 1, ":");
            SelectionStart = Text.Length;

        }
    }
}

这将格式化并验证输入,该输入始终从右边开始计数,并且每2个字符插入一个冒号。验证很简单,但尚未在所有情况下都经过测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#|| 运算符不适用于蒙版文本框

来自分类Dev

如何从C#中的文本框获取输入?

来自分类Dev

如何将光标定位在蒙版文本框中的文本结尾?

来自分类Dev

如何仅将数字从蒙版文本框复制到标签?

来自分类Dev

使用蒙版从右到左文本编辑

来自分类Dev

蒙版文本框不允许在蒙版时粘贴

来自分类Dev

文本框从右到左输入,左侧带有减号“-”

来自分类Dev

文本框从右到左输入,左侧带有减号“-”

来自分类Dev

C#如何检查文本框

来自分类Dev

在C#中将文本输入文本框中时,如何使事件发生

来自分类Dev

如何验证文本框仅在ASP.NET C#中输入几个选项?

来自分类Dev

如何验证文本框仅在ASP.NET C#中输入几个选项?

来自分类Dev

c# - 项目再次启动后如何获取先前输入的文本框值

来自分类Dev

C# 元组 - 如何根据文本框的输入搜索问题

来自分类Dev

单击文本框时如何擦除或隐藏文本框文本?C#

来自分类Dev

蒙版文本框中的值四舍五入

来自分类Dev

如何通过使用附加行为将文本框输入标记为无效

来自分类Dev

如何获取动态文本框值C#?

来自分类Dev

如何在C#中制作动态文本框

来自分类Dev

如何在C#中更改文本框的属性?

来自分类Dev

如何从文本框中提取目标?C#

来自分类Dev

C#如何通过循环更改文本框的值?

来自分类Dev

如何实时验证文本框输入

来自分类Dev

如何在c#中实现强制用户以特定格式输入值的分段文本框?

来自分类Dev

如何使用从C#中的一个文本框中输入的值填充数组

来自分类Dev

如何在C#中的有序列表中显示文本框中输入的字符串?

来自分类Dev

如何解析弹出框到文本框的值?

来自分类Dev

绘制文本框控件C#时发生意外行为

来自分类Dev

使用C#获取在其他应用程序的文本框中输入的文本

Related 相关文章

  1. 1

    C#|| 运算符不适用于蒙版文本框

  2. 2

    如何从C#中的文本框获取输入?

  3. 3

    如何将光标定位在蒙版文本框中的文本结尾?

  4. 4

    如何仅将数字从蒙版文本框复制到标签?

  5. 5

    使用蒙版从右到左文本编辑

  6. 6

    蒙版文本框不允许在蒙版时粘贴

  7. 7

    文本框从右到左输入,左侧带有减号“-”

  8. 8

    文本框从右到左输入,左侧带有减号“-”

  9. 9

    C#如何检查文本框

  10. 10

    在C#中将文本输入文本框中时,如何使事件发生

  11. 11

    如何验证文本框仅在ASP.NET C#中输入几个选项?

  12. 12

    如何验证文本框仅在ASP.NET C#中输入几个选项?

  13. 13

    c# - 项目再次启动后如何获取先前输入的文本框值

  14. 14

    C# 元组 - 如何根据文本框的输入搜索问题

  15. 15

    单击文本框时如何擦除或隐藏文本框文本?C#

  16. 16

    蒙版文本框中的值四舍五入

  17. 17

    如何通过使用附加行为将文本框输入标记为无效

  18. 18

    如何获取动态文本框值C#?

  19. 19

    如何在C#中制作动态文本框

  20. 20

    如何在C#中更改文本框的属性?

  21. 21

    如何从文本框中提取目标?C#

  22. 22

    C#如何通过循环更改文本框的值?

  23. 23

    如何实时验证文本框输入

  24. 24

    如何在c#中实现强制用户以特定格式输入值的分段文本框?

  25. 25

    如何使用从C#中的一个文本框中输入的值填充数组

  26. 26

    如何在C#中的有序列表中显示文本框中输入的字符串?

  27. 27

    如何解析弹出框到文本框的值?

  28. 28

    绘制文本框控件C#时发生意外行为

  29. 29

    使用C#获取在其他应用程序的文本框中输入的文本

热门标签

归档