Windows手机:文本框中不允许有多个点?

时间:2013-07-23 07:07:03

标签: c#-4.0 windows-phone-8

我在windows phone 8中编写应用程序。

我需要提供一个文本框,允许用户只输入“Numbers”,如果需要,只能输入一个点“。

我设置<TextBox InputScope="Number" />但它允许多个点。

如何在Windows Phone的文本框中设置单点?

2 个答案:

答案 0 :(得分:2)

设置一个事件,每当文本发生变化时触发该事件:

 <TextBox x:Name="textBox1" TextChanged="textBox1_TextChanged" />

然后在事件函数循环文本中,计算点数,如果点数大于1,则删除所述点。

编辑:您说我是否可以提供示例算法:

        string str = textBox1.Text;
        int dotCount = 0;
        for (int i = 0; i < str.Length; i++)
        {
            if (str[i] == '.')
            {
                dotCount++;
                if (dotCount > 1)
                {
                    str.Remove(i, 1);
                    i--;
                    dotCount--;
                }
            }
        }

答案 1 :(得分:0)

此代码无法正常工作,因此我做了一些改进。希望它有所帮助!我正在使用KeyUp,但TextChange也可以使用。

private void tbMainText_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    TextBox tb = (TextBox)sender; //Getting the textbox which fired the event if you assigned many textboxes to the same event.
    string str = tb.Text;
    int dotCount = 0;
    for (int i = 0; i < str.Length; i++)
    {
        if (str[i] == '.')
        {
            dotCount++;
            if (dotCount > 1)
            {
                str = str.Remove(i, 1); //Assigning the new value.
                i--;
                dotCount--;
            }
        }
    }
    tb.Text = str;
    tb.Select(tb.Text.Length, 0); //Positioning the cursor at end of textbox.
}