PDA

View Full Version : مشکل غیر فعال کردن یک رویداد در زمان اجرا



mahdi12345
چهارشنبه 15 اردیبهشت 1389, 14:59 عصر
سلام من در رویداد MOUSE MOVE یک کنترل IMAGE یک برنامه ای نوشتم که با حرکت موس کنترل جابجا می شود ولی وقتی حرکت موس سریع می شود IMAGE بهم میریزد و حتی مدتی بعد از اینکه موس حرکت نمی کند ولی باز رویداد MOUSE MOVE فراخوانی می شود و کنترل IMAGE جابجا میشود
خواستم با کمک کد اقایSINPIN مشکل حل بکنم و در ابتدا رویداد MOUSE MOVE ,رویداد غیر فعال ودر اخر برنامه اون را فعال بکنم اما C# خطا می گیرد


private void button1_Click(object sender, EventArgs e)
{
// remove event handler
textBox1.TextChanged -= new EventHandler(textBox1_TextChanged);

textBox1.Text = "salam";

// add event handler
textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
}

private void textBox1_TextChanged(object sender, EventArgs e)


{


من این کار در ویژال بیسیک با کمک DOEVENT انحام دادم ولی در C# خوب عمل نکرد

لطفا کمک کنید

mehdi.mousavi
چهارشنبه 15 اردیبهشت 1389, 15:14 عصر
سلام در ابتدا رویداد MOUSE MOVE ,رویداد غیر فعال و در اخر برنامه اون را فعال بکنم اما C#‎ خطا می گیرد من این کار در ویژال بیسیک با کمک DOEVENT انحام دادم ولی در C#‎ خوب عمل نکرد لطفا کمک کنید


سلام.
گفتید DoEvents. اجازه بدید بگم این یکی از خطرناکترین متودهایی هستش که در BCL وجود داره. برای توضیحات بیشتر لطفا این پست (http://barnamenevis.org/forum/showthread.php?t=194398#post865882) رو مطالعه کنید.

اما در مورد خطایی که عنوان کردید، پیام خطای دریافتی رو ذکر نکردید. کدی که من می بینم، بنظر مشکلی نداره. لطفا پیام خطایی رو که با هاش مواجه میشید اینجا قرار بدید.

موفق باشید.

mahdi12345
چهارشنبه 15 اردیبهشت 1389, 16:57 عصر
با تشکر ازشما
در این کد رویداد textchange غیر فعال شده من این کار می خواهم برای غیر فعال کردن رویداد
mouse move انجام بدهم که خطا می گیرد

cardano7
چهارشنبه 15 اردیبهشت 1389, 17:05 عصر
با تشکر ازشما
در این کد رویداد textchange غیر فعال شده من این کار می خواهم برای غیر فعال کردن رویداد
mouse move انجام بدهم که خطا می گیرد






خوب داداش من آخه این چه کاریه؟
بگذار خود Event اجرا بشه اما برای اجرا شدن کدهاش یک شرط بگذار. مثلا از یک متغیر public به عنوان flag استفاده کن و true بودن اون رو در داخل خود Event شرط اجرا شدن دستورات داخل event قرار بده.

-----------------------------
آمریکایی ها وقتی دیدند خودکار توی ماه به دلیل کم بودن جاذبه کار نمی کنه برای فضانوردان خود، خودکاری با تکنولوژی بالا ساختند که چه در آب و چه در فضا کار بکنه. اما روس ها به جای این کار از مداد استفاده کردند. :D

mehdi.mousavi
چهارشنبه 15 اردیبهشت 1389, 17:21 عصر
با تشکر ازشما
در این کد رویداد textchange غیر فعال شده من این کار می خواهم برای غیر فعال کردن رویداد
mouse move انجام بدهم که خطا می گیرد



سلام.
هم میتونید روشی که Cardano7 گفتن رو در پیش بگیرید، هم می تونید بدین شکل از گرفتن Event مورد نظر انصراف بدید:

this.pictureBox2.MouseMove -= new MouseEventHandler(pictureBox2_MouseMove);

موفق باشید.

پاورقی: احتمالا شما جای MouseEventHandler از EventHandler استفاده کرده بودید که موفق نمی شدید.