0

この文字「。」の後のテキストボックス内。このような2文字だけを入力してほしい 100.00。どうやってやるの ?

4

5 に答える 5

2

コンテンツを制限および変更するOnTextChangedイベントを実装する

private void textBox1_TextChanged(object sender, EventArgs e)
{
     int i = textBox1.Text.IndexOf(".");
     if ((i != -1) && (i == textBox1.Text.Length - 4))
     {
         textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
         textBox1.SelectionStart = textBox1.Text.Length;
     }
}
于 2013-01-14T09:47:23.757 に答える
1

目標が数字のみの場合は、次を使用します。

winforms http://msdn.microsoft.com/en-us/library/system.windows.forms.numericupdown.aspx

wpf WPFで同等の良いNumericUpDown?

asp.net http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/NumericUpDown/NumericUpDown.aspx

于 2013-01-14T09:46:29.510 に答える
0

まず、機能的に次のことを行うかどうかを決定する必要があります。

  • マスクを使用して防止する、または
  • つまり、正規表現を使用して検証します

実装は、選択したテクノロジーによって異なります。

防止する場合は、MaskedTextBoxコントロールを探すことができます。これは WinForms で提供され、WPF の Web で見つけることができます。

検証する場合は、Windows フォームまたはWPFのベスト プラクティスを使用してください。

于 2013-01-14T10:23:17.027 に答える
0

そのイベントを使用しTextChangedて入力を検証できます。

private void textBox1_TextChanged(object sender, EventArgs e)
{
    TextBox txt = (TextBox)sender;
    double d;
    if (!double.TryParse(txt.Text, out d))
    {
        MessageBox.Show("Please enter a valid number");
        return;
    }

    string num = d.ToString();
    string decSeparator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
    int numDecPlaces = 0;
    int decSepIndex = num.LastIndexOf(decSeparator);
    if (decSepIndex != -1)
        numDecPlaces = num.Substring(decSepIndex).Length;
    if (numDecPlaces > 2)
    {
        MessageBox.Show("Please enter two decimal places at a maximum");
        return;
    }
}
于 2013-01-14T09:53:47.267 に答える
0

ポイントの後のtextbox.textの長さを確認して、それを行うことができます。「.」のインデックスを見つける textbox.text.length がそのインデックス + 3 よりも大きい場合は、最後の文字を削除します。

int indexofDot=textbox.Text.indexOf('.');
if(textbox.text.Length>indexofDot+3) {... }

最後の文字を削除するには、文字列を別の一時文字列にコピーし、最後の文字を削除してから textbox.Text に戻します

于 2013-01-14T09:49:05.740 に答える