テキストボックス内の特定の文字(私の場合はカンマ(、))の量を制限しようとしています。テキストボックスに最大9カンマしか使えないようにしたい。ユーザーが9よりも多くのコンマを追加しようとすると、エラーのあるメッセージボックスが表示され、さらにユーザーがテキストボックスに入力できるようになります。c# - テキストボックス内で特定の文字を制限する
私のアプリケーションでは、カンマで区切られたテキストボックスに10個のタグを追加することができます。
ユーザによる例えば入力が次のようになり:summer,sexy,hot,beautiful,girls,guys,food,music,funny,lol
テキストボックス(9つのカンマ)で許可されるタグの最大限界です。 制限値に達すると、カンマを入力しなくなります。私は十分に明確であることを望む。
ここまでは私のコードです。私のテキストボックスはtagBoxと呼ばれています。
private void tagBox_TextChanged(object sender, EventArgs e)
{
// Allow max 10 tags in the tag box
string tags = tagBox.Text;
int count = tags.Split(',').Length - 1;
if (count > 9)
{
MessageBox.Show("Max 10 tags are allowed.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
私は、メッセージボックスを表示することしかできませんでした。しかし、どのようにしてより多くのカンマでタイピングするのをやめさせるのですか?
使用KeyPressイベントまたはKeyUpイベントの代わりに、TextChangedイベントのようなものをやるべきだと思います。 KeyPress/KeyUpイベントで現在のカンマカウントがすでに9で、現在の文字がカンマの場合、カンマ文字は禁止されたイベントを取り消すことができます。 –
'Textbox'から継承したカスタムコントロールを作成した場合は、キー入力されたハンドラをオーバーライドし、あなたの限界を超えた場合に無視することができます。 – MDK
代わりにKeyPressに変更します。しかし、どのように私はキーをキャンセル/無視するのですか? (私はまだ、ユーザーが現在の10個のタグを削除/編集するためにDELETEを押すことができるようにしたい)。私はちょうどそれらが9番目のカンマの後にさらに追加できるようにしたくないです。 –