2

これが私のコードです:

private void Form1_Load(object sender, EventArgs e)
{
    maskedTextBox1.Mask = "*[L]";
    maskedTextBox1.MaskInputRejected += new MaskInputRejectedEventHandler(maskedTextBox1_MaskInputRejected);
}

文字だけを受け入れるように設定するにはどうすればよいですか。ありがとう!

4

2 に答える 2

6

マスクされたテキスト ボックスが正規表現を受け入れる場合、これは簡単ですが、残念ながらそうではありません。

1 つの (あまりきれいではありませんが) 方法は、オプションのレター?マスクを使用して、テキスト ボックスで許可する最大長と同じ量を入力することです。つまり、

maskedTextBox1.Mask = "????????????????????????????????.......";

または、マスクの代わりに独自の検証を使用し、そのような正規表現を使用することもできます

void textbox1_Validating(object sender, CancelEventArgs e)
{
    if (!System.Text.RegularExpressions.Regex.IsMatch(textbox1.Text, @"^[a-zA-Z]+$"))
    {
        MessageBox.Show("Please enter letters only");
    }
}

または、 KeyPressイベントを処理することにより、文字以外のキー押下を無視することもできます。これは、私の意見では最善の方法です。

private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"^[a-zA-Z]+$"))
          e.Handled = true;
}
于 2010-11-26T13:40:47.797 に答える
2

文字だけを入力したい場合は、これをkeyPressイベントで使用できます

if (!char.IsLetter(e.KeyChar) && !char.IsControl(e.KeyChar)) //The latter is for enabling control keys like CTRL and backspace
{
     e.Handled = true;
}
于 2010-11-26T15:14:53.717 に答える