PDA

View Full Version : سوال: كنترل اجرا تابع صدا زده شده در mousemove فرم



mahboube
دوشنبه 29 شهریور 1389, 14:23 عصر
سلام
من يك تابع دارم كه توي رويداد mousemove دائم داره صدا زده مي شه!وبراي چن تا شي مختلف(فرم)صدا زده ميشه،ولي براي هر فرم فقط يكبار بايد اجراشه!(توي رويداد موس موو براي هر فرم N بار صدا زده ميشه).چه ميشه كرد بنظرتون؟

flash118
دوشنبه 29 شهریور 1389, 14:30 عصر
خوب میتونید از therd یا همون نخ ها استفاده کنی و بعد براش یه شی از یک نوع فرم بدی اگه true بود دیگه برای اون فرم اجرا نشه فقط کافیه به تابع نخ که اجرا میشه یه if کوچلو اضافه کنید

mahboube
دوشنبه 29 شهریور 1389, 14:31 عصر
دستوراشم اينه:(كارش زوم كردن فرمه ولي براي هر فرم فقط يكبار بايد زوم كنه ولي اين توي موس موو هست و پشت سرهم زوم ميشه!!)



private

void ZoomIn(Form frm)

{
frm.AutoScaleMode = AutoScaleMode.Font;
SizeF aSf = newSizeF(1.2f, 1.2f);
frm.Scale(aSf);
for (int i = 0; i < frm.Controls.Count; i++)
frm.Controls[i].Font = new System.Drawing.Font("tahoma", 5f, FontStyle.Bold);
}

mahboube
دوشنبه 29 شهریور 1389, 14:36 عصر
من باتردها كار نكردم!!ولي تو اين برنامه فرم ها بايد zoom in و zoomout بشن!باmouseover و mouseleave.
بنظرتون با ترد گذاشتن درست ميشه؟!

flash118
دوشنبه 29 شهریور 1389, 15:11 عصر
ببنید راه دیگری هم هست ولی مطئن ترین راه استفاده از نخ هاست چرا چون شما مدام در هنگام ماوس موی اجرا میشه فکر نمی کنم کامپایلر در حالت عادی تفاوتی در اجرای کد ها قائل بشه و باز براتون اجراش میکنه پس برای مدیریت نیار به thred دارید من برای کنترل بیشتر نخ ها رو براتون توصیه کردم و الا راه دیگه و غیر علمی هم هست که اگه نشد اون رو هم خدمتتون بیان میکنم

mahboube
دوشنبه 29 شهریور 1389, 15:17 عصر
من الان تو برنامه نويس يه چرخي زدم در باره تردها!!
(متاسفاه قبلنم خوندم ولي يادم نمياد!).با ترد ها مثلا ما مي گيم هر 2 ثانيه برو چك كن اگر يه مثلا Flag ,true بود بيا تابعمون رو اجرا كن!!!(ببينيد من توي برنامه رو پنجره ها حركت مي كنم واگر روي قسمت title برنامه باشم بايد تابعzoomin اجراشه و اگر از مستطيلش خارج شدم تابع ZOOMOUT،و تاوقتي كه روي مستطيل تايتل فرم هستم ديگه اجرا نشه(يعني تابعZOOMIN)فقط يكبار تو كل حركت موس اجراشه و وقتي خارج شد دوبار به همين شكل!
(اگر باترد ها كارم ميشه خب انجامش ميدم!)
ممنون ار راهنماييات