تبلیغات
banner
banner
banner
تبلیغات
banner

فیلم های آموزشی : 36 +

تعداد کاربران : 34 +

تعداد کل مطالب : 338 +

تعداد نظرات : 29 +

حضرت علی (ع): هر چیزی زکات دارد ، و زکات علم نشر آن است!

آموزش مقدماتی تا پیشرفته سی شارپ بخش دویست و دوم


به نام خداوند لوح و قلم
حقیقت نگار وجود و عدم
خدایی که داننده ی رازهاست
نخستین سرآغاز آغازهاست


آموزش مقدماتی تا پیشرفته سی شارپ بخش دویست و دوم

سلام به همه کاربران وب‌سایت لندلرن

قسمت دویست و دوم


پاسخ دادن به كليك ها :

كنترلي كه در قسمت قبل براي استفاده به عنوان يك پالت رنگ ايجاد كرديم، بايد بتواند هنگامي كه كاربر روي يكي از رنگها كليك كرد، رويداد مناسبي را فراخواني كند.

به همين منظور در بخش امتحان كنيد بعد چند رويداد را به اين كلاس اضافه خواهيم كـرد .

بـه اين ترتيب برنامه اي كه از اين كنترل استفاده مي كند مي تواند متد هايي را ايجاد كرده و تعيين كند كه هنگام ر خ دادن هـر يـك از اين رويدادها اين متد ها فراخواني شوند.

امتحان كنيد: پاسخ دادن به كليك ها

  • به قسمت ويرايشگر كد براي كلاس ColorPalette برويد و با اضافه كردن كد زير به اين كلاس دو متد مورد نظر را ايجاد كنيد:
  • در اين قسمت از برنامه به متدي نياز داريم كه موقعيت ماوس را دريافت كرده و اعـلام كنـد كـه اشـاره گـر مـاوس روي كداميك از كليد هاي موجود در پالت رنگ قرار دارد.
  • براي اين كار متد زير را به كلاس اضافه كنيد:
  • حال در پنجره ي Properties به ليست رويدادهاي كنترل ColorPalette رفته، از اين ليست رويداد MouseUp را انتخاب كرده و روي آن دو بار كليك كنيد تا متد مربوط به اين رويداد ايجاد شود .
  • سپس كد زيـر را بـه اين متد اضافه كنيد:
  • براي تست كنترل جديد به قسمت طراحي فرم مربوط به Form1 رفتـه و كنتـرل PaintCanvas را انتخـاب كنيد.
  • سپس خاصيت Name اين كنترل را به Canvas تغيير دهيد.
  • برنامه را يك بار كامپايل كنيد تا تغييراتي كه در كنترل ColorPalette ايجاد كرده ايم اعمال شوند.
  • سپس كنترل paletteColor را از فرم Form1 انتخاب كرده و با استفاده از ليست رويدادهاي اين كنترل در پنجره ي Properties ،رويداد LeftClick را انتخاب كرده و روي آن دوبار كليك كنيد .
  • به ايـن ترتيـب متد مربوط به اين رويداد ايجاد خواهد شد.
  • سپس كد زير را در اين متد وارد كنيد:
  • برنامه را اجرا كنيد.
  • اين مرتبه مي توانيد با كليك روي هر كدام از رنگ هايي كه در پايين فرم نمايش داده مي شوند،  رنگ مورد استفاده براي ترسيم در فرم را تغيير دهيد.

چگونه كار مي كند؟

كنترل هايي كه در اين قسمت به عنوان دكمه در پالت رنگ استفاده كرده ايم مقداري با كنترلهـاي Button كـه در قـسمتهاي قبل از آنها استفاده مي كرديم تفاوت دارند.

كنترلهاي Button كه در قسمت قبل از آنها استفاده مي كرديم بـه انـدازه ي كـافي هوشمند بودند تا زماني كه روي آنها كليك شود را تشخيص داده و با فراخواني رويدادي در آن زمان كار خاصي را انجـام دهنـد.

امـا دكمه هايي كه در اين قسمت در پالت رنگ ايجاد كرديم، در حقيقت فقط قسمتي از محدوده ي پالت رنـگ هـستند.  بنـابراين زمـان كليك شدن روي آنها را بايد خودمان تشخيص دهيم.

براي اين كار از متد GetButtonAt استفاده مي كنيم .

اين متد موقعيت كنوني اشاره گر ماوس را مي گيرد و سپس بررسـي مي كند كه كداميك از دكمه هاي موجود در پالت رنگ شامل اين موقعيت مي شوند.

به عبارت ديگر مشخص مي كند كه اشاره گـر ماوس روي كداميك از دكمه هاي موجود در پالت رنگ قرار دارد.

در اينجا براي تشخيص اينكه اشـاره گـر مـاوس در محـدوده ي مربـع شـكل كـداميك از دكمـه هـا قـرار دارد مـي تـوانيم از متـد Contains در كلاس Rectangle استفاده كنيم.

البته مشخص است كه كاربر مي تواند در ناحيه اي از اين كنترل كليك كند كه هيچ دكمـه اي در آن قـسمت وجـود نداشـته باشـد.

بنابراين اگر تا انتهاي حلقه هيچ مقداري از تابع برگشت داده نشد، مقدار null را برمي گردانيم تا مشخص شود كـه در ناحيـه اي كه كليك شده دكمه اي وجود نداشته است.

بعد از اتمام اين تابع، متدي را ايجاد مي كنيم تا هنگامي كه رويداد MouseUp اين كنترل رخ داد، اين متد فراخواني شود. در اين متد ابتدا با استفاده از متد GetButtonAt مشخص مي كنيم كه كاربر روي كداميك از دكمه هـاي موجـود در پالـت رنـگ كليك كرده است.

سپس اگر كاربر روي دكمه اي كليك كرده بود (مقدار برگشتي از تابع مخالف null بود)، بر حسب اينكه كـاربر براي كليك كردن از كليد چپ و يا راست ماوس استفاده كرده است مقدار LeftColor و يا RightColor را برابر بـا رنگ انتخابي قرار داده و رويداد متناظر آن را نيز فراخواني مي كنيم.

اما هنوز كنترل PaintCanvas در فرم اصلي برنامه فقط مي تواند با يك رنگ كـار كنـد.

بنـابراين متـدي را بـراي رويـداد LeftClick كنترل paletteColor در نظر مي گيريم تا بـا فراخـواني ايـن متـد رنـگ مـورد اسـتفاده در كنتـرل PaintCanvas بــر اســا س رنــگ انتخــابي در فــرم تغييــر كنــد.

بــراي تنظــيم رنــگ كنتــرل نيــز بايــد از خاصــيت GraphicColor استفاده كنيم.

در قسمت دویست و سوم با ” استفاده از دو رنگ در برنامه ” آشنا میشوید.


درباره نویسنده
سجاد اسدی
   سجاد اسدی

سجاد اسدی هستم دانشجوی رشته نرم افزار و علاقه مند به تدریس و یادگیری دروس مرتبط با تکنولوژی نرم افزار و اینترنت اشیاء جهت ارتباط با بنده مراجعه شود به آیدی سروش و تلگرام : @ordervira و پیج بنده در اینستاگرام instagram.com/sajjadred11 ""اللهم صل علی محمد و آل محمد"" برای شروع هیچ وقت دیر نیست. "الهم عجل لولیک الفرج"

دیدگاه بگذارید

avatar
  اشتراک  
اطلاع رسانی

aparat کانال آپارات

soroush کانال سروش

کانال آی گپ