0

フォームにいくつかのテキストボックスがあり、ユーザーはさまざまな価格の記事を入力する必要があります。私がやりたいのは、,00テキストが変更されるたびに自動的に追加することです。したがって、ユーザーが入力すると、 !123のように表示されます。123,00

以下のコードで試しましたが、機能しないようです:

private void textBox6_TextChanged(object sender, EventArgs e)
    {
        if (!textBox6.Text.Contains(","))

        textBox6.SelectionStart =textBox6.TextLength;
        textBox6.Text += ",00";
    }

どんな助けでも大歓迎です

4

5 に答える 5

1

String.EndsWtih文字列の終わりのみをチェックするために使用します。

private void textBox6_TextChanged(object sender, EventArgs e)
{
    if (!textBox6.Text.EndsWith(",00"))
        textBox6.Text += ",00"
}

変更をすぐに実行する必要が本当にない限り、イベントではなく、TextChangedイベントを使用してください。Leaveキーを押すたびにこのような複雑な操作を行うと、うまく機能しない傾向があります。

于 2013-03-25T16:21:44.940 に答える
1

TextBoxのkeypressイベントでコードを使用します。

于 2013-03-25T16:23:35.013 に答える
0

以下のコードを試してください:

textBox6.BeginInvoke(delegate ()=> 
{
   textBox6.Text +=",00"
});
于 2013-03-25T16:23:42.743 に答える
0

Jasonが言ったようにleave、これが不適切な場合は、イベントを使用して、文字列に変換し、次のようにテキストボックスにフィードバックすることができます。

  private void textBox6_TextChanged(object sender, EventArgs e)
        {

            string myString = textBox6.Text;
            if (!myString.Contains(','))
            {
                myString += ",00";
            }

            textBox6.Text = myString;
        }

また、ユーザーが数値のみを入力していることを確認するためのチェックを調べることをお勧めします。

于 2013-03-25T16:23:58.147 に答える
0

string.Formatを試してください。

string numStr = textBox6.Text;
decimal num;

if(decimal.TryParse(numStr, out num)){
  textBox6.Text = string.Format("{0:#,##0.00}", num);
}

ただし、小数点記号としてコンマ'、'が必要な場合は、いくつかのカルチャを指定する必要があります。

于 2013-03-25T16:24:20.780 に答える