在WinForms中,将输入光标设置在文本后.在文本末尾替换

本文关键字:文本 替换 设置 光标 WinForms 输入 | 更新日期: 2023-09-27 18:13:37

我目前正在编写一个与金融相关的小应用程序,并希望确保我的用户知道如何编写十进制值(使用DOT而不是逗号)

为了确保输入是正确的,我已经将控件提交给TextChanged事件,如下所示。

        // Remove people not knowing how to write decimals.
        if (ExpenseValueTB.Text.Contains(',')) {
            ExpenseValueTB.Text = ExpenseValueTB.Text.Replace(',', '.');
            ExpenseValueTB.Focus();
        }

现在这肯定工作,但不幸的是,输入光标跳转回开始。所以如果有人想写'15,96',他们最终会写9615。

我已经环顾四周,但任何其他类似的问题是js或PHP

多谢!

在WinForms中,将输入光标设置在文本后.在文本末尾替换

你可以使用TextBox基方法中的SelectionStart和SelectionLength

    if (ExpenseValueTB.Text.Contains(',')) {
        ExpenseValueTB.Text = ExpenseValueTB.Text.Replace(',', '.');
        ExpenseValueTB.SelectionStart = ExpenseValueTB.Text.IndexOf('.') + 1;
        ExpenseValueTB.SelectionLength = 0;
        ExpenseValueTB.Focus();
    }

,但最好的方法可能是删除简单的TextBox并使用MaskedTextBox,它允许您更好地格式化用户输入

这是你想要的吗?

<>以前ExpenseValueTB。