Currency Textbox, custom control, as the name implies, will accept only numbers, decimals and control characters. None of other type will be allowed in this textbox. This textbox is basically used to input prices, rates or any measurement including precision.
I have discussed about all the events used to create custom textbox. Open your Visual Studio 2013 Windows Forms project and add a new class named “CurrencyTextBox”, inherit this by System.Windows.Forms.TextBox. Go through the following points, they all together will make this textbox:
Run your project and in the toolbox a node is added named components followed by project name. You can use this textbox in your project as per your requirements.
Download CurrencyTextBox.cs
I have discussed about all the events used to create custom textbox. Open your Visual Studio 2013 Windows Forms project and add a new class named “CurrencyTextBox”, inherit this by System.Windows.Forms.TextBox. Go through the following points, they all together will make this textbox:
Property
Property will be used to get or set the value in the textbox.private decimal currencyValue;
public decimal CurrencyValue
{
get { return currencyValue; }
set { currencyValue = value; }
}
public decimal CurrencyValue
{
get { return currencyValue; }
set { currencyValue = value; }
}
Constructor
When the object of this class has been created, by-default it’s value is set to zero, as written in the below c# code.public CurrencyTextBox()
{
currencyValue = 0;
}
{
currencyValue = 0;
}
OnKeyPress
What is to be allowed to write in the textbox? Decided in this event. The first line is used to call its base class constructor with specified arguments. After this I have used some if conditions to specify which key is to be accepted or which is not. “e.Handled=true” this line is used to stop the character from being entered into the textbox.protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
if (e.KeyChar == '.' && this.Text.Contains("."))
{
e.Handled = true;
}
if (e.KeyChar == '.' && this.Text.Length < 1)
{
e.Handled = true;
}
}
{
base.OnKeyPress(e);
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
if (e.KeyChar == '.' && this.Text.Contains("."))
{
e.Handled = true;
}
if (e.KeyChar == '.' && this.Text.Length < 1)
{
e.Handled = true;
}
}
OnValidated
When the focus is changed, this event will convert the entered value into decimal value. Because currency is used in decimal not string.protected override void OnValidated(EventArgs e)
{
Decimal value = Convert.ToDecimal(this.Text);
this.Text = value.ToString("C");
}
{
Decimal value = Convert.ToDecimal(this.Text);
this.Text = value.ToString("C");
}
OnClick
When the user click on the textbox, it will set the text to currencyValue (property value) and the cursor will be placed at the last of input value.protected override void OnClick(EventArgs e)
{
this.Text = currencyValue.ToString();
if (this.Text == "0")
this.Clear();
this.SelectionStart = this.Text.Length;
}
{
this.Text = currencyValue.ToString();
if (this.Text == "0")
this.Clear();
this.SelectionStart = this.Text.Length;
}
OnTextChanged
Change the newly entered value into decimal format.protected override void OnTextChanged(EventArgs e)
{
currencyValue = Convert.ToDecimal(this.Text);
}
{
currencyValue = Convert.ToDecimal(this.Text);
}
Run your project and in the toolbox a node is added named components followed by project name. You can use this textbox in your project as per your requirements.
Download CurrencyTextBox.cs
Tidak ada komentar:
Posting Komentar