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

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

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

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

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

حضرت محمد (ص) : ز گهواره تا گور دانش بجوی .

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


“به نام آن که تن را نور جان داد خرد را سوی دانایی عنان داد”

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

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

قسمت صد و صد و چهل و ششم


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

همانطور كه در قسمت قبلی مشاهده کردید.

اين برنامه نيز تقريبا مشابه برنامه ي Favorites Viewer است، فقط تغييرات كـوچكي در آن ايجاد شده است .

دليل اين تغييرات نيز اين بوده است كه ظاهر برنامه را تغيير داده ايم، در غير اين صورت قسمت اصلي برنامه كه از كلاسهاي Favorites و WebFavorite تشكيل شده است، با برنامه قبلي برابر است .

پروسه ي مربوط به ايجاد منوي برنامه را اين بار به جاي آنكه در رويداد Load فرم قرار دهيم، در رويـداد Click مربـوط بـه كنترل NotifyIcon قرار مي دهيم .

به اين ترتيب هر بار كه كاربر روي آيكون كليك كند، ابتـدا منـو ايجـاد شـده و سـپس نمايش داده مي شود .

در اين متد همانند برنامه ي قبلي، ابتدا شيئ اي از كلاس Favorites ايجاد كرده و سپس متد ScanFavorites را در آن فراخواني مي كنيم تا آرايه ي FavoriteCollection را كامل كند.

البته دقت كنيد به علت اينكه فضاي نام كلاس Favorites برابر با Favorite_Viewer است، يا بايد اين فضاي نام را با استفاده از راهنماي using ———به برنامه اضافه كنيم و يا همانند زیر، نام كامل كلاس را ذكر كنيم .

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

همانند كنترل ListView ،گزينه هاي موجود در كنترل ContextMenuStrip نيز در حقيقت اشـيايي از كـلاس ToolStripMenuItem هــستند .
بنــابراين در حلقــه ي foreach بــازاي هــر عنــصري كــه در آرايــه ي FavoriteCollection قرار دارد، يك شيئ از كلاس ToolStripMenuItem ايجاد كـرده و خاصـيت هاي آن را تنظيم مي كنيم.

اولين خاصيتي كه بايد تنظيم شود متني است كه براي اين گزينه نمايش داده مي شود .

با تنظيم خاصيت Text ايـن شـيئ، مـتن مناسبي را براي آن قرار مي دهيم .

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

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

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

به عبارت ديگر اين متد حتمـاً بايـد از نـوع void باشـد و دو پــارامتر، يكــي از نــوع EventArgs.System و يكــي از نــوع object دريافــت كنــد.

بنــابراين متــدي بــه نــام MenuItems_Click با اين مشخصات ايجاد مي كنيم، سپس با اضافه كردن اين متد به رويداد Click شيئ اي كـه از نوع ToolStripMenuItem ايجاد كرده ايم، مشخص مي كنيم كه اين متد بايد هنگام كليك شدن روي اين گزينـه فراخواني شود .

به اين ترتيب تمام خاصيت هاي مورد نياز براي شيئ ToolStripMenuItem را تنظيم كرده ايم و مي توانيم آن را بـه منوي برنامه اضافه كنيم .

بعد از اتمام اين حلقه، گزينه هاي موجود در فولدر Favorites به منو اضافه شده اند،

اما هنوز منو كامل نشده است و بايد دو گزينه ي ديگر نيز به آن اضافه شود :

  • يك خط جدا كننده
  • و يك گزينه براي خروج از برنامه .

براي اضافه كردن خط جدا كننده به منـو بايد شيئ اي را از نوع ToolStripSeperator ايجاد كرده و آن را به منو اضافه كنيم.

براي ايجاد گزينه ي خروج از برنامه نيز كافي است مانند قسمتهاي قبـل عمـل كنـيم .
امـا دقـت داشـته باشـيد كـه در رويـداد Click اين گزينه قرار مي گيرد با كد رويداد Click ديگر گزينه ها مقداري تفاوت دارد.
پس براي آن، متدي جداگانه (اما بـا همان ساختار و با همان پارامترهاي ورودي و خروجي ) به نامExitMenuItem_Click ايجاد كرده و آن را بـه رويـداد Click شيئ اضافه مي كنيم. در آنها نيز شيئ را به منو اضافه مي كنيم .

كد درون متد ExitMenuItem_Click ساده است و تاكنون به مراتـب از آن اسـتفاده كـرده ايـد، بنـابراين نيـازي بـه توضيح ندارد .

پس به سراغ كد درون متد MenuItems_Click مي رويم .

همانطور كه گفتم متد هايي كـه بـراي رويـداد كليك فراخواني مي شوند، بايد دو پارامتر دريافت كنند .

يكي از اين پارامتر ها شيئ اي از كلاس Object بـه نـام sender است.

هنگامي كه در برنامه رويدادي براي يك شيئ رخ بدهد، براي مثال روي يكي از گزينه هـاي منـو كليـك شـود درون متـد بـا استفاده از پارامتر sender مي توانيم به اين شيئ دسترسي پيدا كنيم .

پس درون متد MenuItems_Click هم مـي تـــوانيم بـــا اســـتفاده از پـــارامتر sender بـــه شـــيئ اي كـــه روي آن كليـــك شـــده اســـت (و مـــسلماً از نـــوع ToolStripMenuItem است) دسترسي داشته باشيم .

در اين متد مي خواهيم به اطلاعاتي كه درون خاصيت Tag مربوط به شيئ قرار دارد دسترسي پيدا كنيم، پس ابتدا شـيئ را از نـوع Object به نوع ToolStripMenuItem تبديل كرده و مـتن داخـل Tag را بدسـت مـي آوريـم .

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

حــال فقــط كــافي اســت ايــن لينــك را بــه متــد Start از كــلاس  System.Process.Diagnostics بفرستيم تا آن را در اينترنت اكسپلورر نمايش دهد.

ادامه دوره با بحث های شیرین در خدمت شما هستیم.


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

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

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

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

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

soroush کانال سروش

کانال آی گپ