PDA

View Full Version : ساخت تکست باکس با قابلیت جداکردن ارقام



milad_esmaeili
پنج شنبه 06 مرداد 1390, 15:34 عصر
سلام
سوال 1 : من میخام یه تکست باکس بسازم که مثل تکست باکس های ورود ارقام پولی قابلیت جدا کردن بوسیله کاما را داشته باشه
اما نکته ای که هست میخام تعداد ارقامی که مابین هر کاما وارد میشه را خودم تعیین کنم
سوال 2 : یه تکست باکس دارم که فقط عدد داخلش وارد میشه..میخام علاوه بر عدد کاراکتر + هم بگیره
آیا راهی هست ؟
کدش اینه :

private void UscTell_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox textBox = sender as TextBox;
Int32 selectionStart = textBox.SelectionStart;
Int32 selectionLength = textBox.SelectionLength;

String newText = String.Empty;
foreach (Char c in textBox.Text.ToCharArray())
{
if (Char.IsDigit(c) || Char.IsControl(c)) newText += c;
}

textBox.Text = newText;

textBox.SelectionStart = selectionStart <= textBox.Text.Length ?
selectionStart : textBox.Text.Length;
};

اگه نمونه پروژه ای هست دوستان بزارند ممنون میشم
یا اینکه توضیح بدن چی سرچ کنم توی اینترنت تا به نتیجه برسم
مرسی

mmd2009
جمعه 07 مرداد 1390, 15:56 عصر
با سلام

جواب سوال اول رو میتونی به این شکل حل کنی :


int ls = 3;
int number = int.Parse(this.txtPrice.Text.Trim());

this.txtPrice.Text = number.ToString("N0", new NumberFormatInfo()
{
NumberGroupSizes = new[] { ls },
NumberGroupSeparator = "."
});


سوال دوم رو هم میتونی به این شکل حل کنی :


private void txtPrice_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsTextAllowed(e.Text);
}
private bool IsTextAllowed(string text)
{
Regex regex = new Regex("[^0-9+]");
return !regex.IsMatch(text);
}


توجه داشته باش که در این مثال ها خودت یک فکری باید بکنی برای paste یا میخوای از کامپوننت استفاده کن یا میخوای حافظه کلیبورد رو پاک کن یا .....

موفق باشید

milad_esmaeili
جمعه 07 مرداد 1390, 20:14 عصر
مزسی واقعا ممنونم ولی میشه لطف کنید بفرمایید کد مربوط به سوال اول را کجا بنویسم؟؟؟؟؟؟؟
توی textchange نوشتم ولی جواب نداد
بازم ممنونم

mmd2009
جمعه 07 مرداد 1390, 21:52 عصر
در رویداد LostFocus باید بذارید اونو

دوست عزیز دکمه تشکر رو بزنید به جای تشکر کردن چون اینطوری پستتون رو هم که میدید حذف میشه

موفق باشید

araz_pashazadeh
دوشنبه 10 مرداد 1390, 18:17 عصر
با عرض سلام خدمت دوستان.
من از ای تکه کد استفاده کردم اما متاسفانه با مشکل مواجه شدم.
int ls = 3;
int number = int.Parse(this.txtPriceBuy.Text.Trim());
this.txtPriceBuy.Text = number.ToString("N0", new NumberFormatInfo() { NumberGroupSizes = new[] { ls }, NumberGroupSeparator = "." });
به این تابع خطا دادNumberFormatInfo()؟
چطوری از این کد استفاده کنم؟
در ضمن این رخداد LostFocus را نتوانستم پیدا کنم.

mmd2009
دوشنبه 10 مرداد 1390, 18:52 عصر
چه خطایی میده دوست عزیز؟

دوست عزیز این رویداد مال TextBox هستش و مطمئن باشید وجود دارد کافیه تو Search خود رویداد ها بنوسید lost خودش نشونتون میدش

موفق باشید

araz_pashazadeh
دوشنبه 10 مرداد 1390, 19:09 عصر
من #C کار می کنم من لیست کامل رخدادهای تکس باکس را نگاه کردم ولی رخدادی با این نام نبود.
برای تابع new NumberFormatInfo() خطا میده میگه تابع ای با این نام پیدا نکردم.
باید از using خاصی استفاده کنم؟

mmd2009
سه شنبه 11 مرداد 1390, 13:14 عصر
دوست عزیز منظور شما از #C فکر کنم WinForm باشه درسته؟؟؟!! چون در wpf این رویداد وجود داره و البته معادل این کد LostFocusدر WinForm میشه Leave
و در اخر شما زمانی میتونید از NumberFormatInfo استفاده کنید که فضای نام System.Globalization رو استفاده بکنید

موفق باشید

davoodrm666_666
چهارشنبه 12 مرداد 1390, 08:13 صبح
در صورتی که از RadMaskTextBox استفاده کنید تنها کافیه درxaml خاصیت MaskType رو به حالت Numeric تبدیل و خاصیت Mask رو مساوی n0 قرار بدهید

araz_pashazadeh
چهارشنبه 12 مرداد 1390, 19:44 عصر
دوست عزیز منظور شما از #C فکر کنم WinForm باشه درسته؟؟؟!! چون در wpf این رویداد وجود داره و البته معادل این کد LostFocusدر WinForm میشه Leave
و در اخر شما زمانی میتونید از NumberFormatInfo استفاده کنید که فضای نام System.Globalization رو استفاده بکنید

موفق باشید


با راهنمایی شما خطا برطرف شد اما نتیجهای برام نداشت؟
این رخدادکی فعال میشه؟
من دقیقا همین تکه کد را نوشتم ولی رخداد فعال نشد.

mmd2009
جمعه 14 مرداد 1390, 00:13 صبح
این رخداد زمانی رخ خواهد دارد که شما از TextBox مورد نظر leave کرده باشیه

البته برای اینکه کاربر راحتر بتونی بعد از Enter شدن دوباره متن ( مقدار) رو ویرایش بهتره کدی در خاصیت GotFocuse قرار دهید که رقم رو به حالت اولیه برگردونه

موفق باشید