3

以下のコードを使用して、テキストボックス内の数字以外の文字を許可しません...しかし、「。」は許可されます キャラクター!ドットを許可したくありません。

    private void txtJustNumber_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsDigit((char)(e.KeyChar)) &&
            e.KeyChar != ((char)(Keys.Enter)) &&
            e.KeyChar != (char)(Keys.Delete) &&
            e.KeyChar != (char)(Keys.Back)&&
            e.KeyChar !=(char)(Keys.OemPeriod))
        {
            e.Handled = true;
        }
    }
4

4 に答える 4

3

これを使って:

    if (!char.IsDigit((char)(e.KeyChar)) &&
            e.KeyChar != ((char)(Keys.Enter)) &&
            (e.KeyChar != (char)(Keys.Delete) || e.KeyChar == Char.Parse(".")) &&
            e.KeyChar != (char)(Keys.Back) 
            )

これは、Keys.Delete の char 値が「.」と同じ 46 であるためです。なぜこれが好きなのかわかりません。

于 2012-10-25T19:01:31.057 に答える
0

keypress イベントで問題が発生した場合は、次のコードを試してください。

   private void txtMazaneh_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsDigit(e.KeyChar) && (int)e.KeyChar != 8 ||(e.KeyChar= .))
            e.Handled = true;
    }
于 2014-06-25T08:17:40.063 に答える
0

代わりにこれを試すことができtextBox1ます(テキストボックスはどこにありますか):

// Hook up the text changed event.
textBox1.TextChanged += textBox1_TextChanged;

...

private void textBox1_TextChanged(object sender, EventArgs e)
{
    // Replace all non-digit char's with empty string.
    textBox1.Text = Regex.Replace(textBox1.Text, @"[^\d]", "");
}

または

// Save the regular expression object globally (so it won't be created every time the text is changed).
Regex reg = new Regex(@"[^\d]");

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (reg.IsMatch(textBox1.Text))
        textBox1.Text = reg.Replace(textBox1.Text, ""); // Replace only if it matches.
}
于 2012-10-25T18:51:41.663 に答える
-1
//This is the shortest way
private void txtJustNumber_KeyPress(object sender, KeyPressEventArgs e)
{
    if(!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
    {
        e.Handled = true; 
    }
}
于 2013-08-09T03:55:28.543 に答える