امروز موقع کار نیاز به یک TextBox داشتم که قابلیت Digit Grouping یا جداسازی اعداد رو پشتیبانی کنه، یعنی اعداد به صورت یکان، دهگان و ... جدا بشن. با جستجو چیزی که به کارم بیاد پیدا نکردم و خودم دست به کار شدم.
برای یادگیری و آموزش سی شارپ ( آموزش زبان برنامه نویسی سی شارپ ) رایگان به این لینک بروید
با فرض اینکه یک TextBox با نام TextBox1 بر روی فرم ما قرار داره، کد زیر رو برای رویدادهای TextChanged و KeyPress اضافه کنید. کد زیر داخل Constructor فرم نوشته شده:
public Form1() { InitializeComponent(); var callTextChange = true; textBox1.TextChanged += (sender, args) => { if (!callTextChange) return; var textBox = (TextBox)sender; var selectionIsLast = textBox.SelectionStart == textBox1.TextLength; var lastSelectionStart = textBox.Text.Length - textBox1.SelectionStart; var numberText = textBox.Text.Replace(",", ""); var newText = string.Empty; var separatorFlag = 0; for (var counter = numberText.Length - 1; counter >= 0; counter--) { newText = newText + numberText[counter]; separatorFlag++; if (separatorFlag == 3 && counter == 0) break; if (separatorFlag != 3) continue; newText = newText + ','; separatorFlag = 0; } callTextChange = false; textBox.Text = string.Join("", newText.Reverse()); callTextChange = true; if (selectionIsLast) textBox.SelectionStart = textBox.TextLength; else textBox.SelectionStart = textBox.TextLength < lastSelectionStart ? 0 : textBox.TextLength - lastSelectionStart; }; textBox1.KeyPress += (sender, args) => { if (char.IsDigit(args.KeyChar) || args.KeyChar == '\b') return; args.Handled = true; }; }
نمونه اجرای برنامه:
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب
حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود