1

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

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

非常感谢!

4

2 回答 2

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 让您更好地格式化用户输入

于 2013-05-15T14:11:28.093 回答
1

那是你要找的吗?

ExpenseValueTB.SelectionStart = ExpenseValueTB.Text.Length;
于 2013-05-15T14:14:02.270 回答