می توانید در رویداد KeyPress ، تعیین کنید که چه کاراکترهایی را کاربر می تواند تایپ کند. در زیر می گوییم هر چیزی که عدد و دکمه BackSpace نبود رو فیلتر کن.
privatevoid comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back;
}
روش دوم:
شما می توانید عمل چک کردن رو در انتها انجام دهید یعنی پس از وارد شدن Text:
try
{
long.Parse(comboBox1.Text);
}
catch
{
MessageBox.Show("Error");
}
اگر در تبدیل رشته به عدد خطایی روی دهد یعنی اینکه نوشته تایپ شده حاوی کاراکتر غیر عددی است.
----------------------------------------------------
کد زیر هم برای رویداد KeyPress یک TextBox نوشته شده که فقط می توان در این تکس باکس، عدد اعشاری صحیح وارد کرد. (+ یا - فقط در ابتدا و یکبار ، علامت دات . فقط یکبار ، حتی اگر شما قسمتی که مثلا + داره رو Select کنید می تونید تغییرش بدید ولی اگر قسمت Select شده حاوی + نباشه و + قبلا وارد شده باشه، دیگر اجازه وارد کردن + جدید ندارید.)
این هم هدیه ای از من به شما ! با تشکر!
privatevoid textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back &&
e.KeyChar != '.' && e.KeyChar != '-' && e.KeyChar != '+';
// ںگ© کé ê¢ë ں뢦ں 묧ى ی§
// چیë ںگ© ê¢ë ں뢦ں ¬§ى ں¬§ ںی§ ںیë §ی مéںê¢ پ¨ی©ه¢ى ¬ی§. ھی©ں ê¢ë پںک ¦یںى§ ¬§
if (textBox1.SelectedText != textBox1.Text)
{
if (e.KeyChar == '.')
{
try
{
// ںی§ ¢یںë پ« ںھ + یں - مéںê¢ ںم¬ں© ©ں یں©§ ک©§
if (textBox1.Text != "+" && textBox1.Text != "-" && textBox1.Text != "")
{
// ںگ© ¦لں ©یی §ى§ یمëی §© ê¢ë یک ں© مéںê¢ ںم¬ں© یں©§ ¬§ى. پ« ë ںی§ §ی ں©ى یں©§ ¬ی§
long.Parse(textBox1.Text);
}
}
catch
{
e.Handled = e.KeyChar == '.';
}
}
elseif (e.KeyChar == '+' || e.KeyChar == '-')
{
// ©ںی ک뢩é '+' یں '-' ¢ک©ں©ی §© ں ¢§ںی کں§© ê¢ë
// ںیë §ی مéںê¢ ¥¢êں ںی§ §© ں ¢§ںی ê¢ë یں©§ ¬ی§
// ںگ© ç«ê¢ی ںھ ê¢ë ں뢦ں ¬§ى ں¬§ کى ¬ںêé ê£ ¢ یں êëهی ں«¢، ںی§ ںیë §ی مéںê¢ §© ںیë ¥ںé¢ پ¨ی©ه¢ى ¬ی§
if ((String.Compare(textBox1.Text, 0, "+", 0, 1) == 0 ||
String.Compare(textBox1.Text, 0, "-", 0, 1) == 0 ||
textBox1.SelectionStart != 0) &&
(String.Compare(textBox1.SelectedText, 0, "+", 0, 1) != 0 &&
String.Compare(textBox1.SelectedText, 0, "-", 0, 1) != 0))
{
e.Handled = e.KeyChar == '+' || e.KeyChar == '-';
}
}
}
}