PDA

View Full Version : آموزش: تکست باکس با قابلیت جدا کردن سه رقم سه رقم ارقام



Mahmoud.Afrad
پنج شنبه 04 خرداد 1391, 06:07 صبح
سلام

برای داشتن تکست باکسی با قابلیت جدا کردن ارقام میتوان کلاسی را از تکست باکس مشتق کرد و با override کردن متد OnTextChanged ارقام را جدا کرد.
برای جدا کردن ارقام میتوان از فرمت دهی در تبدیل به رشته استفاده کرد. البته برای استفاده میبایست مقدار رشته را به عدد تبدیل کرده(()decimal.Pars) و سپس متد ToString را با فرمت N0 به رشته تبدیل کرد. 0 تعداد رقم اعشار را مشخص میکند.
برای داشتن متن داخل تکست باکس بدون علامت جدا کننده ، یک پراپرتی به نام TextWithoutSeparator تعریف میکنیم که مقدار Text را بدون علامت جداکننده ( , ) به ما میدهد که میتوان برای محاسبات و یا همچنین ذخیره در دیتابیس از آن استفاده کرد.(این پراپرتی setter ندارد و نمیتوان مقدار به آن داد.)
برای فعال کردن حالت جداکردن ارقام یک پراپرتی به نام SeparateNumber تعریف شده که میتوان از پنجره properties این خاصیت را true کرد(به طور پیشفرض false است)
برای استفاده از این کلاس، بعد از اضافه کردن این کلاس به پروژه ، یک بار پروژه را دیباگ(Build) کنید سپس میتوانید از toolbox ابزار separateTextBox را استفاده کنید.

using System;
using System.Windows.Forms;
public class separateTextBox : TextBox
{
private bool separateNumber;
public bool SeparateNumber
{
get { return separateNumber; }
set
{
separateNumber = value;
SeparateTextWithDecimalSeparator();
}
}
public string TextWithoutSeparator
{
get { return Text.Replace(",", string.Empty).Trim(); }
}

protected override void OnTextChanged(EventArgs e)
{
SeparateTextWithDecimalSeparator();
}

private void SeparateTextWithDecimalSeparator()
{
if (separateNumber)
{
if (!string.IsNullOrEmpty(this.TextWithoutSeparator))
{
this.Text = decimal.Parse(this.Text).ToString("N0");
}
}
else
{
this.Text = Text.Replace(",", string.Empty).Trim();
}
this.Select(this.TextLength, 0);
}
}