PDA

View Full Version : numeric TextBox



Kubuntu
پنج شنبه 09 آذر 1391, 00:25 صبح
سلام بچه ها!!

واسه اینکه تکس باکسم فقط عددی باشه. قشنگ ترین کد که می شه واسش نوشت چیه؟! :لبخندساده:

ممنون از توجهتون

samadblaj
پنج شنبه 09 آذر 1391, 00:33 صبح
سلام اگه میخوای کد هات زیاد نشه و راحت باشی در تمامی قسمت ها بهت پیشنهاد میکنم از این کامپوننت استفاده کن کارش حرف نداره یه سرچم کنی سورسشم پیدا میکنی...
به فرمت اضاف کن و از propertis مقدار رو onlyNumber انتخاب کن.
موفق باشید./

Kubuntu
پنج شنبه 09 آذر 1391, 00:38 صبح
اوه مرسی عزیزم! ولی من میخواستم خودم کنترلش رو بنویسم. واسه کدش هم نمی دونم چرا هرچی سرچ می کنم متد درست درمون نمی تونم پیدا کنم!

plus
پنج شنبه 09 آذر 1391, 01:05 صبح
این رو بررسی کنید:


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;
}

}

بررسی دکمه کنترل برای حالاتی مثل Ctrl+V یا Ctrl+C انجام شده. بررسی TextChanged برای حالاتی که کاربر مقداری رو توی کنترل Paste میکنه بررسی شده. حالت KeyPress هم برای وقتی کاربر به صورت معمولی Type میکنه توی کنترل

vB.N3T
پنج شنبه 09 آذر 1391, 01:10 صبح
خود ویژوال یک ابزار داره به نام maskedTextBox اونو اضافه کن و set mask رو تنظیم کن رو عدد
تمام

Kubuntu
پنج شنبه 09 آذر 1391, 01:21 صبح
@vB.N3T
آره ولی اون underline تو text میذاره تا اونجا که یادمه

Kubuntu
پنج شنبه 09 آذر 1391, 01:31 صبح
@plus
دستت درد نکنه!! فک نکم کوتاه تر از کد شما پیدا کنم چون همه شرط ها رو درنظر گرفتید دیگه!!

samadblaj
پنج شنبه 09 آذر 1391, 10:36 صبح
@vB.N3T
آره ولی اون underline تو text میذاره تا اونجا که یادمه
اون underLine رواز پروپرتی Hide کن...

Farshid007
پنج شنبه 09 آذر 1391, 11:31 صبح
تو Key Press:
if (!char.IsDigit(e.KeyChar) && (Keys)e.KeyChar != Keys.Back)
{
e.Handled = true;
}

قشنگترینش همینه