PDA

View Full Version : رویدادهای key در دیتاگرید



mohammad-gh
پنج شنبه 27 دی 1386, 10:33 صبح
با سلام .رویداد key down - keypress یا key up رو وقتی که در یک سلول دیتا گرید هستیم چطور می شه شناخت.
واضح تر این که من می خواهم وقتی در یک سلول دیتا گرید هستم با فشردن هر دکمه ای یک فرم خاص باز بشه.
من فروم رو جستجو کردم اما هر کس که پرسیده بود جوابی هم بهش داده نشده بود یا گفته بودند این کار امکان ندارد. من که باورم نمیشه وی بی دات نت خودش چیزی نداشته باشه.:متفکر:

mohammad-gh
چهارشنبه 03 بهمن 1386, 11:34 صبح
بابا یعنی اینقدر سخته

Microsoft.net
چهارشنبه 03 بهمن 1386, 19:39 عصر
وقتی داخل یک سلول هستی event های پرسی handle میشند . برای این کار باید از windows message ها استفاده کنید و یک event خودتون طراحی کنید مخصوص این کار . من یک کلاسی نوشتم که این کار رو میکنه . کافیه این کلاسو به پروژت ADD کنی و dataGridView خودتو از این کلاس inherits کنی . یک event به نام otherKeys به گریدت اضافه میشه و می تونی کدت رو اونجا بنویسی و مشکلت حل میشه . من سالها قبل خیلی این مشکل وقتمو گرفت تا حلش کردم . امیدوارم راحت مشکلت حل بشه (;

arsalansalar
پنج شنبه 04 بهمن 1386, 13:41 عصر
دوست عزیز می شود کمی بیشتر درباره کار با این کلاس توضیح دهید؟

Microsoft.net
پنج شنبه 04 بهمن 1386, 18:40 عصر
دوست عزیز می شود کمی بیشتر درباره کار با این کلاس توضیح دهید؟

همون طور که میدونید هر رویداد یک Message است که یک Object رو از چیزی که در خارج از محدوده اون Object اتفاق افتاده با خبر میکنه . با این تعریف میریم برای حل مشکل بوجود اومده در این تاپیک . DataGridView هنگامی که در حال Edit کردن یک Cell هستید بنا به دلایلی رویداد های KeyDown , KeyUp , KeyPress رو هندل میکنه و اگه شما این رویداد ها رو Trace کنید میبینید که هیچ وقت در زمان ذکر شده داخل این روال ها کدی اجرا نمیشه .
با توجه به تعریفی که از رویداد دادم باید یک رویداد مخصوص این کار درست کنیم و به DataGridView اضافه کنیم . برای این کار استفاده از Windows Message ها بهترین راه حل به نظر میرسه . کلاسی که نوشتم این کار رو میکنه و زمانی که این رویداد اتفاق بیفته event ای که به گرید اضافه کردیم trigger میشه . کافیه گرید شما از این کلاس inherits بشه . خود این کلاس هم از گرید ویو inherits شده . اگه کلاس رو ببینید خیلی راحت به کار اون پی خاهید برد .
موفق باشید .