ایجاد یک رویداد برای همه textbox ها
سلام من تعداد زیادی تکست باکس تو فرمم دارم و برای جدا کردن سه رقم سه رقم تو رویداد Text_change یکیشون از کد زیر استفاده کردم
if (txt1m.Text == "" || txt1m.Text == "0") return;
decimal price;
price = decimal.Parse(txt1m.Text, System.Globalization.NumberStyles.Currency);
txt1m.Text = price.ToString("#,#");
txt1m.SelectionStart = txt1m.Text.Length;
حالا اگه نخواسته باشم واسه تک تک تکست باکس ها این کد رو کپی نکنم چیکار باید کنم؟
نقل قول: ایجاد یک رویداد برای همه textbox ها
میتونید یک user control بسازین و از تکس باکس ارث بری کنید و این ایونت رو بهش اضافه کنید و در هر جا خواستیم استفاده کنید
نقل قول: ایجاد یک رویداد برای همه textbox ها
سلام دوست گرامی
از کد زیر در زمان Form Load استفاده کن
فقط به جای کد textBox1_TextChanged ،رویداد تکست باکس مورد نظرت رو بنویس
foreach (Control ctrl in this.Controls)
{
if ((ctrl as TextBox) != null)
{
(ctrl as TextBox).TextChanged += textBox1_TextChanged;
}
}
نقل قول: ایجاد یک رویداد برای همه textbox ها
با سلام و اجازه دوستان،
شما حتما حتما این مطلب رو بخونید
در ضمن این کد همونیه که شما میخواین
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication13
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
foreach (Control ctrl in this.Controls)
{
if (ctrl is TextBox)
{
ctrl.TextChanged += textChange;
}
}
}
void textChange(object sender, EventArgs e)
{
var textBox = sender as TextBox;
Double value;
if (Double.TryParse(textBox.Text, out value))
textBox.Text = string.Format("{0:#,##0}", value);
else
textBox.Text = String.Empty;
}
}
}
نقل قول: ایجاد یک رویداد برای همه textbox ها
سلام
من کاری که شما گفتی رو انجام دادم ولی فقط واسه اون تکست باکسی که رویداد توش هست اعمال میشه باقی نه
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ctrl in this.Controls)
{
if ((ctrl as TextBox) != null)
{
(ctrl as TextBox).TextChanged += txt1m_TextChanged;
}
}
}
private void txt1m_TextChanged(object sender, EventArgs e)
{
if (txt1m.Text == "" || txt1m.Text == "0") return;
decimal price;
price = decimal.Parse(txt1m.Text, System.Globalization.NumberStyles.Currency);
txt1m.Text = price.ToString("#,#");
txt1m.SelectionStart = txt1m.Text.Length;
}
نقل قول:
نوشته شده توسط
BEHZADnr
سلام دوست گرامی
از کد زیر در زمان Form Load استفاده کن
فقط به جای کد textBox1_TextChanged ،رویداد تکست باکس مورد نظرت رو بنویس
foreach (Control ctrl in this.Controls)
{
if ((ctrl as TextBox) != null)
{
(ctrl as TextBox).TextChanged += textBox1_TextChanged;
}
}
نقل قول: ایجاد یک رویداد برای همه textbox ها
سلام، کد رو کامل تست کردم و گذاشتم، درسته
شما چند تا تکس باکس بذارین رو فرم و با زدن دکمه F7 به محیط کدنویسی برین و 17-11 و 28-20 رو تو جاهای مربوطه کپی کنید. البته کد بالا یه ایرادی داره و باعث میشه که همه تکس باکس ها سه رقم سه رقم اعدادشون از هم جدا بشه و اگر بخواین به جای عدد حرف وارد کنید اون موقع پیغام خطا میده برنامتون. کد زیر اصلاح شده کد بالاست و هر تکس باکسی که دوست داشته باشین می تونید بگین که ارقامش سه تا سه تا از هم جدا بشن
using System;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.textBox1.TextChanged += new System.EventHandler(this.textChange);
this.textBox2.TextChanged += new System.EventHandler(this.textChange);
}
void textChange(object sender, EventArgs e)
{
var textBox = sender as TextBox;
Double value;
if (Double.TryParse(textBox.Text, out value))
textBox.Text = string.Format("{0:#,##0}", value);
else
textBox.Text = String.Empty;
}
}
}
مثلا در خط 12 به جای نام textBox1 بنویسین txtm1 یا بجای textbox2 اسم هر تکس باکسی که خودتون دارین رو بنویسین
نقل قول: ایجاد یک رویداد برای همه textbox ها
حالا من میخوام همه تکست باکس هایی که دارم وقتی عددش رو تایپ کرد و از اون خارج شد همه ش با هم جمع بشه و از کد زیر استفاده کردم اما همش صفر میشه امکانش هست اینم راهنمایی بفرمایید:
void SumTextBoxs(object sender, EventArgs e) {
sum = 0;
foreach (Control ctrl in this.Controls)
{
if (ctrl is TextBox)
{
TextBox t = ctrl as TextBox;
string sum1 = t.Text;
lblMablaq.Text = t.Text;
sum += Convert.ToInt32(sum1.Replace(",", string.Empty));
}
//lblMablaq.Text = sum.ToString();
}
}
اینم اضافه کنم که تو فرمم چندین گروپ باکس و تو هر کدوم چندین تکست باکس دارم و تو رویداد leave تکست باکس ها تابع بالا رو فراخوانی کردم