WinForms,在文本末尾的Text.Replace之后设置输入光标

时间:2013-05-15 14:05:29

标签: c# winforms textbox

我目前正在编写一个与财务相关的小应用程序,并希望确保我的用户知道如何编写小数值(使用DOT而不是COMMA。)

为了确保输入正确,我已将控件提交给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

非常感谢!

2 个答案:

答案 0 :(得分:3)

您可以使用TextBox基本方法中的SelectionStartSelectionLength

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

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

答案 1 :(得分:1)

你在找什么?

ExpenseValueTB.SelectionStart = ExpenseValueTB.Text.Length;