私はWindows Phone 8でアプリケーションを書いています。
ユーザーが「数字」のみを入力できるようにするテキストボックスを提供する必要があり、必要に応じてドットを 1 つだけ入力する必要があります。
設定<TextBox InputScope="Number" />
しましたが、複数のドットを許可します。
Windows phone のテキストボックスに単一のドットを設定するにはどうすればよいですか?
私はWindows Phone 8でアプリケーションを書いています。
ユーザーが「数字」のみを入力できるようにするテキストボックスを提供する必要があり、必要に応じてドットを 1 つだけ入力する必要があります。
設定<TextBox InputScope="Number" />
しましたが、複数のドットを許可します。
Windows phone のテキストボックスに単一のドットを設定するにはどうすればよいですか?
テキストが次のように変更されるたびにトリガーされるイベントを設定します。
<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--;
}
}
}
このコードは正常に機能していないため、いくつかの改善を行いました..お役に立てば幸いです! 私は 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.
}