نوشته شده توسط
reza_ali202000
این تکست باکس 6 تا خاصیت داره:
0. وقتی فوکاس میشه خودکار به زبان فارسی تغییر پیدا میکنه.
1. وقتی فوکاس میشه تغییر رنگ میده.
2. وقتی فوکاس میشه یه خورده بزرگتر میشه.
3. نوع ورودیش رو میشه مشخص کرد
4. با اینتر به کنترل بعدی میره.
5. وقتی فوکاس میشه کل متن داخلش انتخاب میشه
که مشخصه کار هرکدوم چیه.
خودم از همین برا کل پروژه هام استفاده میکنم.
اگه دیدم دوستان علاقه دارن سورسشو هم میزارم.
لطفا اگه عیب و ایرادی میبینید بگین تا برطرفش کنم.
دوست عزیز تشکر میکنم واقعا پست خیلی عالی بود که باعث کاهش کد نویسی و سرعت بخشیدن میشه.
با اجازه آقا رضا.
namespace extendedtextbox
{
using System;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.Windows.Forms;
public class TextBoxReza : TextBox
{
private Color bk;
private Color bkfocus;
private type typetextbox;
public TextBoxReza()
{
this.bk = base.BackColor;
base.TextChanged += new EventHandler(this.ExtdTextBox_TextChanged);
base.KeyPress += new KeyPressEventHandler(this.ExtdTextBox_KeyPress);
base.LostFocus += new EventHandler(this.ExtdTextBox_LostFocus);
base.Enter += new EventHandler(this.ExtendTextBox_Enter);
base.KeyDown += new KeyEventHandler(this.TextBoxReza_KeyDown);
this.bkfocus = Color.FromArgb(0xcc, 0xff, 0xbd);
}
private void changelanguge(string lname)
{
foreach (InputLanguage language in InputLanguage.InstalledInputLanguages)
{
if (language.Culture.TwoLetterISOLanguageName == lname)
{
Application.CurrentCulture = language.Culture;
Application.CurrentInputLanguage = language;
}
}
}
private void ExtdTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (this.typetextbox == type.floating)
{
if ((!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) && (e.KeyChar != '.'))
{
e.Handled = true;
}
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
e.Handled = true;
}
}
else if (this.typetextbox == type.numeric)
{
if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}
}
else if (this.typetextbox == type.money)
{
if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}
}
else if (((this.typetextbox != type.general) && (this.typetextbox == type.nonumeric)) && (char.IsDigit(e.KeyChar) || (e.KeyChar == '.')))
{
e.Handled = true;
}
}
private void ExtdTextBox_LostFocus(object sender, EventArgs e)
{
this.BackColor = this.bk;
base.Width -= 6;
base.Left += 3;
}
private void ExtdTextBox_TextChanged(object sender, EventArgs e)
{
if ((this.typetextbox == type.money) && (this.Text != ""))
{
this.Text = Convert.ToDecimal(this.Text).ToString("#,#", CultureInfo.InvariantCulture);
}
base.Select(this.Text.Length, 0);
}
private void ExtendTextBox_Enter(object sender, EventArgs e)
{
this.changelanguge("fa");
this.bk = base.BackColor;
this.BackColor = this.bkfocus;
base.Width += 6;
base.Left -= 3;
base.Select(0, this.Text.Length);
}
private void TextBoxReza_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{tab}");
}
}
[DisplayName("Type"), Category("Extended Properties"), Description("sets type TextBox"), Browsable(true)]
public type typetxt
{
get
{
return this.typetextbox;
}
set
{
this.typetextbox = value;
}
}
[Browsable(true), Category("Extended Properties"), Description("set Backcolor Focuse"), DisplayName("BackColorFocus")]
public Color WaterMarkBackColor
{
get
{
return this.bkfocus;
}
set
{
this.bkfocus = value;
base.OnTextChanged(new EventArgs());
}
}
public enum type
{
general,
nonumeric,
numeric,
money,
floating
}
}
}