الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لماذا بعض احداث العناصر لا تعمل؟

مغلق
بدأه musa في 19 سبتمبر 2004 · 6 رد · 618 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندما اقوم بتطبيق الاحداث التالية فإن حدث الفورم يتنفذ بينما حدث الزر لا يتنفذ مع ملاحظة انه عند استخدام الدباق(debug) فإن كلاهما يتنفذ. فما هو السبب؟

private string s="";
  private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
  {
 	 //this.Text="Form1";
 	 this.s=this.Text;
 	 this.Text="mouse moved on the form";
  }

  private void button1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
  {
 	 this.Text=this.s;
 	 //this.Text="mouse moved on the button";
  }
#2

:Simply uncomment this line

  //this.Text="mouse moved on the button";
'to
  this.Text="mouse moved on the button";

رأس الحكمة الإيمان بالله

#3

شكرا لك اخي محمد عبدالعليم.

ولكن الاجابة تظل غير واضحة وخصوصا واني اريد استخدام بعض المتغيرات مع العلم بأنه في حالة الدباق لا توجد مشاكل؟؟؟

#4

أعتقد أن الحدث يتنفذ الا أن حدث الفورم يتنفذ أكثر من مرة قبل أن يتنفذ حدث الزر وهذا ما يؤدي الى حفظ "mouse moved on the form" ضمن المتحول s . لذلك عليك أن تحذف ال MouseEventHandler

اذن أولا

أضف متحولا جديدا لمتحولات الفورم

MouseEventHandler handler;

استبدل السطر التالي ضمن الفنكشن InitializeComponent()

this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);

بـ

handler =  new MouseEventHandler(this.Form1_MouseMove)
this.MouseMove += handler;

وضمن Form1_MouseMove عليك اضافة السطر التالي

this.MouseMove -= handler;

لاعادة تفعيل حدث الفورم عليك اضافة السطر التالي لحدث الزر

this.MouseMove += handler;

وحدن بيبقو متل زهر البيلسان وحدهن بيقطفو وراق الزمان

بيسكرو الغابي بيضلهن متل الشتي يدقوا على بوابي على بوابي

يا زمان يا عشب داشر فوق هالحيطان ضويت ورد الليل عكتابي

برج الحمام مسور و عالي هج الحمام بقيت لحالي لحالي

يا ناطرين التلج ما عاد بدكن ترجعو صرخ عليهن بالشتي يا ديب بلكي بيسمعو

http://www.mazikana.com/Songs/F/Fayrouz/mp...uz---Wahdon.mp3

#5

شكرا كثيرا DotNetExpert.

ولكن تبقى مشكلة انه في حالة تحريك الماوس اكثر من مرة من الفورم الى الزر والعكس تعود نفس المشكلة؟

#6

هناك طريقة اسرع وابسط وهي تعريف متغير من نوع bool ومن بعد كل تنفيذ لحدث ما تغير قيمة هذا المتحول بحيث يتنفذ الحدثان على التوالي بحيث يصبح الكود

private string s="";
bool flag = true;
 private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
 {
  //this.Text="Form1";
if(flag)
{
       this.s=this.Text;
       this.Text="mouse moved on the form";
       flag = false;
}
 }

 private void button1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
 {
  this.Text=this.s;
  //this.Text="mouse moved on the button";
  flag = true;
 }

جربها واخبرني بالنتيجة

وحدن بيبقو متل زهر البيلسان وحدهن بيقطفو وراق الزمان

بيسكرو الغابي بيضلهن متل الشتي يدقوا على بوابي على بوابي

يا زمان يا عشب داشر فوق هالحيطان ضويت ورد الليل عكتابي

برج الحمام مسور و عالي هج الحمام بقيت لحالي لحالي

يا ناطرين التلج ما عاد بدكن ترجعو صرخ عليهن بالشتي يا ديب بلكي بيسمعو

http://www.mazikana.com/Songs/F/Fayrouz/mp...uz---Wahdon.mp3

#7

النتيجة كانت 100%.

شكرا كثيرا

هذا الموضوع مغلق.

مواضيع مشابهة