PDA

View Full Version : محدود کردن textbox



javad.jaddi
شنبه 11 شهریور 1396, 11:31 صبح
سلام خدمت مهندسین
میخوام دستوری بنویسم که کاربر درون تکست باکس فقط مجاز به وارد کردن حروف فارسی و عدد باشه
ممنونم راهنمایی کنید

danialafshari
شنبه 11 شهریور 1396, 14:39 عصر
سلام خدمت مهندسین
میخوام دستوری بنویسم که کاربر درون تکست باکس فقط مجاز به وارد کردن حروف فارسی و عدد باشه
ممنونم راهنمایی کنید

با سلام
برای عدد میشود کاری کرد ولی برای فارسی بهتره در Button بعد از وارد کردن و یا Leave Event استفاده کنید (همانند سایت ها)
خوبی Event این هست که کپی هم Handle شود
برای عدد پیشنهاد میکنم از کامپوننت های معروف مثل devComponent یا devExpress یا Janus و یا MaskedTextBox استفاده کنید ولی کدنویسیش به این شکل هست:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
int isNumber = 0;
e.Handled = !int.TryParse(e.KeyChar.ToString(), out isNumber);
}

اینم برای فقط عدد و جلوگیری از کپی هست

public partial class Form1 : Form
{
private bool _isFormmating = false;
private bool _isControlDown = false;

public Form1()
{
InitializeComponent();
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (_isFormmating == false)
{
_isFormmating = true;
textBox1.Text = FormatText(textBox1.Text);
_isFormmating = false;
}
}

private string FormatText(string unformattedText)
{
StringBuilder formattedText = new StringBuilder(unformattedText.Length);
int i = 0;
while (i < unformattedText.Length)
{
if (unformattedText[i] >= '0' && unformattedText[i] <= '9')
formattedText.Append(unformattedText[i]);
i++;
}
return formattedText.ToString();
}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!_isControlDown)
if (e.KeyChar != '\b' && (e.KeyChar < '0' || e.KeyChar > '9'))
e.Handled = true;
}

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyCode & Keys.ControlKey) == Keys.ControlKey)
_isControlDown = true;
}

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
_isControlDown = false;
}

}

که بنظرم از MaskedTextBox استفاده کنید بهتره
اینم متد تشخیص حروف فارسی :

public static bool FA(string Text)
{
if (System.Text.RegularExpressions.Regex.IsMatch(Text .Trim(), "^[ا-یء-ی ]+$"))
{
return true;
}
else
{
return false;
}
}

استفاده در خود تکست باکس (که عرض کردم بهتره در اونت کنترل بشه)

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if (FA(textBox1.Text) == false)
textBox1.ResetText();
}


موفق باشید