金額の入力を促すTextBoxを作成しています。したがって、ユーザーがそのTextBoxに1000と入力すると、TextBoxでは自動的に1,000になります。これは可能ですか?
質問する
624 次
3 に答える
2
私は長さベースのソリューションが好きではありません(より多くの数のためにより多くのコードを実装する必要があります)。
グーグルで見つかった1つの解決策はそれです:
XAMLファイルの場合:
<code>
<textbox x:name="PurchasePriceTextBox" text="$0.00" keydown="CurrencyTextBox_KeyDown" lostfocus="CurrencyTextBox_LostFocus" />
</code>
CSファイルの場合:
private void CurrencyTextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
char key = Convert.ToChar(e.Key);
//if the key is not 0-9 prevent the event from being handled further
if (!(key >= '0' && key <= '9'))
e.Handled = true;
}
private void CurrencyTextBox_LostFocus(object sender, RoutedEventArgs e)
{
var textBox = (TextBox)sender;
decimal value = 0;
//if the textbox is not already formatted as currency, format it
if(Decimal.TryParse(textBox.Text.Trim(), NumberStyles.Number | NumberStyles.AllowCurrencySymbol, CultureInfo.CurrentUICulture, out value))
{
textBox.Text = string.Format("{0:C}", value);
}
}
于 2012-10-16T07:20:20.723 に答える
0
フォーカスリーブイベントでは、長さに応じてループします。
if (textbox.Text.Length <4)
{
return;
}
int i = 2;
if textbox.Text.Length%2 ==0)
{
i = 1;
}
l = textbox.Text.Length;
while(l > 3)
{
textbox.Text = textbox.Text.Insert(i, ",");
i+=2;
l-=2;
}
return;
于 2012-10-16T07:28:31.287 に答える
0
以下に示すように、テキストボックスのtextbox_TextChangedイベントを利用します。
private void textbox_TextChanged(object sender, TextChangedEventArgs e)
{
if (textbox.Text.Length ==4)
{
textbox.Text = textbox.Text.Insert(1, ",");
return;
}
}
于 2012-10-16T07:07:38.573 に答える