PDA

View Full Version : جلوگیری از اجرا شدن ایونت TextChanged



Mrs.Net
شنبه 26 بهمن 1387, 08:53 صبح
یه تکست باکس برای خودم ساختم که در شرایطی متن تکست باکس رو عوض میکنه
اما میخوام هنگامیکه متن توسط این متد عوض شد دیگه ایونت textchanged صدا زده نشه
یا به عبارتی از بیرون این تغییر ایونتی رو صدا نزنه
ممنون

ASKaffash
شنبه 26 بهمن 1387, 09:17 صبح
سلام
یک راهش با شبیه سازی است مثلا :


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.textBox1.Tag = "0";
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.textBox1.Tag.ToString() == "0")
this.Text = this.textBox1.Text.Length.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
this.textBox1.Tag = "1";
this.Text = "";
this.textBox1.Text = "Hello";
this.textBox1.Tag = "0";
}

Mrs.Net
شنبه 26 بهمن 1387, 10:48 صبح
راه حل درستش استفاده از آورراید کردن OnTextChanged هست که میتونید عمل صدا زدن یا صدا نزدن ایونت رو کنترل کنید.
ممنون ASKaffash اما قبل از حل مسئله حتما اول به دنبال راه پیش بینی شده برای اون مسئله بگردید . زمان میبره اما صحیح تر هست.

Esmail Solhkhah
شنبه 26 بهمن 1387, 11:39 صبح
جسارتاً توفایل .Designer.Cs فرم مورد نظر کد زیر را پیدا کن


this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);

و به


this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);

تغییر بده

ASKaffash
شنبه 26 بهمن 1387, 11:41 صبح
سلام
ولی اینجوری Event را غیر فعال میکنید مثل :


private void textBox1_TextChanged(object sender, EventArgs e)
{
this.Text = "Ok";
}
private void button3_Click(object sender, EventArgs e)
{
this.textBox1.TextChanged -= new System.EventHandler(this.textBox1_TextChanged);
this.Text = "No";
this.textBox1.Text = "Hello";
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
}