لطفا از تمام مطالب دیدن فرمایید.
فصل چهارم _ بخش پنجم _ کار با لیست های پیوندی در C#
فرض کنید که می خواهید لیستی ازاطلاعات تمام مشترکین خود داشته باشید. در این حالت می توانید از اریه ها استفاده کنید، اما همیشه هم کار با آرایه ها چندان ساده نیست.
-
اگر نیاز داشته باشید که یک مشترک جدید را به اریه اضافه کنید، باید اندازه آرایه را تغییر دهید و سپس مشترک را به انتهای ارایه اضافه کنید. برای اینکار باید ارایه جدید که یک واحد بزرگتر از ارایه کنونی است ایجاد کنید وسپس تمام عناصر ارایه کنونی رابه ارایه جدید منتقل کنید و مشترک جدید را نیز به ارایه اضافه کنید در انتها نیز اراه اول را از بین ببرید.
-
اگر بخواهید یک مشترک را از ارایه حذف کنید باید باید بصورت خطی در تمام عناصر ارایه به نبال مشترک بگردید و پس از پیدا کردن مکان آن، تمام عناصر ارایه را به جز عنصری که می خواهید حذف کنید، در یک ارایه جدید قرار دهید و ارایه کنونی را از بین ببرید.
-
برای این که یکی از مشترکین لیست را با مشترک دیگری تعویض کنید، باید مشترک اول را در ارایه پیدا کنید و سپس بصورت دستی مشترک اول را با مشترک دوم جابه جا کنید.
با استفاده از لیست های پیوندی در .NET که به وسیله کلاس ArrayList قابل دسترسی هستند می توانید به راحتی در طول برنامه ارایه ها کنترل کنید.
استفاده از لیست های پیوندی :
نحوه استفاده از لیست های پیوندی در امتحان کنید زیر شرح داده شده است.
امتحان کنید : استفاده از لیست های پیوندی
-
پروژه ای را که در بخش قبل در فصل 4 (Structure Demo) ایجاد کرده اید را دوباره باز کنید، به قسمت طراحی فرم ان بروید و یک کنترل ListBox به فرم اضافه کنید مکان کنترل های روی فرم را به نحوی تغیر دهید که فرم شما مشابه شکل زیر شود.خاصیت Name این ListBox را برابر با lstCustomer و خاصیت IntegralHeight ان را برابر با False قرار دهید.
نکته: می توانید با استفاده از Ctrl + A تمام کنترلهای روی فرم را انتخاب کنید سپس آنها را به موقعیت جدیدشان ببرید.
-
ویرایشگر کد فرم را باز کرده و کد مشخص شده در زیر را به ابتدای کلاس Form1، بعد از تعریف کلاس اضافه کنید:
نکته: اگر هنگام نوشتن این کد ویژوال استودیو نام ArrayList را کامل نکرد، به عبارت دیگر این کلاس را جز کلاسهای تعریف شده نداشت بایستی فضای نام ان را به برنامه خود اضافه کنید. این کلاس در فضای نام System.Collection قرار دارد. یک فضای نام با استفاده از کلمه کلیدی using به برنامه اضافه می شود. برای اضافه کردن فضای نام System.Collection به بالا ترین خط در قسمت کدهای مربوط به Form1 بروید و کد زیر را وارد کنید:
در فصل های بعدی در رابطه با کلمه کلیدی using بیشتر صحبت خواهیم کرد.
-
حالا متد زیر را برای اسیجاد یک مشترک جدید به برنامه اضافه کنید:
-
سپس متد btnTest را به صورت زیر تغییر دهید:
برنامه را اجرا کنید و بر روی دکمه Test کلیک کنید نتیجه ای مشابه شکل زیر مشاهده خواهید کرد.

امتحان کنید: باز نویسی متد ToString ()
-
قسمت ویرایشگر کد برای ساختار Customer را باز کرده و کد زیر در این ساختار، بعد از تعریف متغییر ها قرار دهید.همانطور که در کد مشاهده می کنید، این تابع دارای XML Document Comment است. از فصل 3 به بعد خاطر دارید که برای اضافه کردن این نوع توضیحات به برنامه باید از سه کاراکتر / متوالی قبل از متد استفاده کنید.
-
برنامه را اجرا کرده و بر روی دکمه Test کلیک کنید. نتیجه ای را مشابه شکل زیر مشاهده خواهید کرد.
چگونه کار می کند؟
هنگامی که یک متغیر از نوع داده ای Customer به لیست اضافه شود، کنترل ListBox تا بع To String این متغییر را فراخوانی کرده ورشته ای که به وسیله این تابع برگردانده می شود را دریافت می کند. در این کد، متد ToString را به صورتی باز نویسی کردیم که به جای برگرداندن نام خود ساختار، یک عبارت با معنی را نمایش دهد.
نکته: به این عمل override کردن متد ها گفته می شود که در فصل های بعد بیشتر با آن آشنا می شویم.
یک لیست پیوندی که به وسیله ArrayList ایجاد می شود، می تواند لیستی از اشیاء و یا ساختار ها، از هر نوع که باشند، را در خو نگهداری کند. به عبارت دیگر می توانید اشیائی از نوع های گوناگون ..........................
امیدوارم از آموزش خوشتون اومده باشه(نظر در مورد نحوه آموزش یادتون نره)
فصل چهارم _ بخش پنجم _ کار با لیست های پیوندی در C#
فرض کنید که می خواهید لیستی ازاطلاعات تمام مشترکین خود داشته باشید. در این حالت می توانید از اریه ها استفاده کنید، اما همیشه هم کار با آرایه ها چندان ساده نیست.
-
اگر نیاز داشته باشید که یک مشترک جدید را به اریه اضافه کنید، باید اندازه آرایه را تغییر دهید و سپس مشترک را به انتهای ارایه اضافه کنید. برای اینکار باید ارایه جدید که یک واحد بزرگتر از ارایه کنونی است ایجاد کنید وسپس تمام عناصر ارایه کنونی رابه ارایه جدید منتقل کنید و مشترک جدید را نیز به ارایه اضافه کنید در انتها نیز اراه اول را از بین ببرید.
-
اگر بخواهید یک مشترک را از ارایه حذف کنید باید باید بصورت خطی در تمام عناصر ارایه به نبال مشترک بگردید و پس از پیدا کردن مکان آن، تمام عناصر ارایه را به جز عنصری که می خواهید حذف کنید، در یک ارایه جدید قرار دهید و ارایه کنونی را از بین ببرید.
-
برای این که یکی از مشترکین لیست را با مشترک دیگری تعویض کنید، باید مشترک اول را در ارایه پیدا کنید و سپس بصورت دستی مشترک اول را با مشترک دوم جابه جا کنید.
با استفاده از لیست های پیوندی در .NET که به وسیله کلاس ArrayList قابل دسترسی هستند می توانید به راحتی در طول برنامه ارایه ها کنترل کنید.
استفاده از لیست های پیوندی :
نحوه استفاده از لیست های پیوندی در امتحان کنید زیر شرح داده شده است.
امتحان کنید : استفاده از لیست های پیوندی
-
پروژه ای را که در بخش قبل در فصل 4 (Structure Demo) ایجاد کرده اید را دوباره باز کنید، به قسمت طراحی فرم ان بروید و یک کنترل ListBox به فرم اضافه کنید مکان کنترل های روی فرم را به نحوی تغیر دهید که فرم شما مشابه شکل زیر شود.خاصیت Name این ListBox را برابر با lstCustomer و خاصیت IntegralHeight ان را برابر با False قرار دهید.
نکته: می توانید با استفاده از Ctrl + A تمام کنترلهای روی فرم را انتخاب کنید سپس آنها را به موقعیت جدیدشان ببرید.
-
ویرایشگر کد فرم را باز کرده و کد مشخص شده در زیر را به ابتدای کلاس Form1، بعد از تعریف کلاس اضافه کنید:
نکته: اگر هنگام نوشتن این کد ویژوال استودیو نام ArrayList را کامل نکرد، به عبارت دیگر این کلاس را جز کلاسهای تعریف شده نداشت بایستی فضای نام ان را به برنامه خود اضافه کنید. این کلاس در فضای نام System.Collection قرار دارد. یک فضای نام با استفاده از کلمه کلیدی using به برنامه اضافه می شود. برای اضافه کردن فضای نام System.Collection به بالا ترین خط در قسمت کدهای مربوط به Form1 بروید و کد زیر را وارد کنید:
در فصل های بعدی در رابطه با کلمه کلیدی using بیشتر صحبت خواهیم کرد.
-
حالا متد زیر را برای اسیجاد یک مشترک جدید به برنامه اضافه کنید:
-
سپس متد btnTest را به صورت زیر تغییر دهید:
برنامه را اجرا کنید و بر روی دکمه Test کلیک کنید نتیجه ای مشابه شکل زیر مشاهده خواهید کرد.

امتحان کنید: باز نویسی متد ToString ()
-
قسمت ویرایشگر کد برای ساختار Customer را باز کرده و کد زیر در این ساختار، بعد از تعریف متغییر ها قرار دهید.همانطور که در کد مشاهده می کنید، این تابع دارای XML Document Comment است. از فصل 3 به بعد خاطر دارید که برای اضافه کردن این نوع توضیحات به برنامه باید از سه کاراکتر / متوالی قبل از متد استفاده کنید.
-
برنامه را اجرا کرده و بر روی دکمه Test کلیک کنید. نتیجه ای را مشابه شکل زیر مشاهده خواهید کرد.
چگونه کار می کند؟
هنگامی که یک متغیر از نوع داده ای Customer به لیست اضافه شود، کنترل ListBox تا بع To String این متغییر را فراخوانی کرده ورشته ای که به وسیله این تابع برگردانده می شود را دریافت می کند. در این کد، متد ToString را به صورتی باز نویسی کردیم که به جای برگرداندن نام خود ساختار، یک عبارت با معنی را نمایش دهد.
نکته: به این عمل override کردن متد ها گفته می شود که در فصل های بعد بیشتر با آن آشنا می شویم.
یک لیست پیوندی که به وسیله ArrayList ایجاد می شود، می تواند لیستی از اشیاء و یا ساختار ها، از هر نوع که باشند، را در خو نگهداری کند. به عبارت دیگر می توانید اشیائی از نوع های گوناگون در این لیست ذخیره کنید(این مورد مقداری جلوتر در این فصل بیشتر توضیح داده شده) در این مثال متدی به نام CreateCustomer ایجاد کردیم که بر اساس پارامتر هایی که به آن فرستاده شده بود، یک متغییر از نوع Customer را ایجاد می کرد:
هنگامی که متغییر مورد نظرمان را ایجاد کردیم، آن را به لیست پیوندی که از کلاس ArrayList به نام objCustomers ایجاد کرده بودیم اضافه می کنیم.
همچنین مغییر ایجاد شده را به کنترل لیست باکس نیز اضافه می کنیم تا آن را نمایش دهد:
هنگامی که متد CreateCustomer را تعریف کردید، می توانید با فراخوانی آن یک مشترک جدید تعریف کرده و آن را به لیست باکس نیز اضافه کنید:
حذف یک عنصر از لیست های پیوندی:
تا کنون با مبانی کار با لیست های پیوندی آشنا شدید. در برنامه های قبلی با استفاده از این نوع لیست ها، کارهایی که انجام آن ها با ارایه ها بسیار مشکل بود را به راحتی انجام دادیم.برای مثال توانستیم چندین عنصر جدید را به راحتی به این لیست اضافه کنیم.در این بخش چگونگی پاک کردن بعضی از عناصر یک لیست را بررسی خواهیم کرد.
امتحان کنید:پاک کردن مشترکین
-
با استفاده از قسمت طراحی فرم یک کنترل Button جدید به قسمت پایین فرم اضافه کنید.سپس خاصیت Name آن را به btnDelete و خاصیت Text آن را برابر Delete تغییر دهید.
-
بر روی این کنترل 2 بار کلیک کنید و کد مشخص شده در زیر را در متد مربوط به رویداد Click ان وارد کنید:
-
سپس خاصیت SelectedCustomer که در کد بالا استفاده شده است به صورت زیر به کلاس Form 1 اضافه کنید.
-
برنامه را اجرا کرده و بر روی دکمه ی Test کلیک کنید. بدون اینکه مشترکی را از لیست انخاب کنید، بر روی دکمه Delete کلیک کنید. کادر پیغامی را مشاهده خواهید کرد که می گوید باید یک مشترک را از لیست انتخاب کنید تا بتوانید ان را حذف کنید.
-
حال یک مشترک را انتخاب کنید و بر روی دکمه Delete کلیک کنید. کادر پیغامی را مشاهده خواهید کرد که برای حذف مشترک که برای حذف مشترک از شما سوال می کند ؟
-
بر روی گزینه Yes کلیک کنید مشاهده خواهید کرد که گزینه انتخابی شما از لیست پاک می شود.
چگونه کار می کند؟؟
یکی از نکته های این برنامه ایجاد خاصیتی بود که مشترک انتخاب شده درکنترل ListBox را بر می گرداند خاصیت SelectedIndex در کنترل ListBox، اندیس عنصر انتخاب شده در لیست را بر می گرداند. اما اگر هیچ عنصری در لیست انتخاب نشده باشد،این تابع عدد -1 را نتیجه می دهد.
همانند خاصیت Name در ساختار Customer این خاصیت نیزاز نوع فقط خواندنی ایحاد شده است.همانطور که مشاهده می کنید، این خاصیت فقط دارای بلاک get است وبلاک set ندارد.به همین دلیل در برنامه فقط می توانیم،به مقدار کنونی این خاصیت دسترسی پیدا کنیم و نمی توانیم مقدار آن را تنظیم کنیم.
درون کنترل کننده ی رویداد Click برای دکمه Delete ابتدا بررسی می کنیم که آیا مشترکی از لیست انتخاب شده است یا نه؟ در صورتی که هیچ فردی از لیست انتخاب نشده بود، با نمایش یک کادر پیغام به کاربر می گوئیم که باید یک مشترک را انتخاب کنید تا بتواند آن را حذف کند. سپس از متد خارج می شویم و به اربر اجازه می دهیم که فردی را از لیست انتخاب کند.
اگر کاربر مشترکی را از لیست انتخاب کرده بود، نام او را در یک کادر پیغام نمایش می دهید نا مطمئن شوید کاربر می خواهد آن را از لیست حذف کند.

حال باید بررسی کنیم که کاربرد دکمه Yes را فشره است یا نه؟ برای این کار از دستور if استفاده می کنیم. اگر مقدار متغیری که از نوع DialogResult تعریف کرده ایم برابر با DialogResult.Yes باشد، به این معنی است که کاربر گزینه Yes را انتخاب کرده است. در غیر این صورت کاربر از حذف مشترک منصرف شده است و گزینه No را انتخاب کرده است.
برای حذف کاربر از لیستف متغیری را از نوع ساختار Customer تعریف می کنیم و مشترکی را که می خواهی از لیست حذف کنیم در آن قرار می دهیم:
با استفاده از متد Remove کلاس ArrayList می توانیم مشترک انتخاب شده را از لیست حذف کنیم.برای این کار باید متقیری را که در مرحله قبل، مشترک را در آن ذخیره کریم به عنوان پارامتر به متد بفرستیم:
برای حذف کاربر از لیست باکس هم باید از روشی مشابه استفاده کنید:
نمایش عناصر موجود در لیست پیوندی:
برای کامل شدن برنامه، باید یک سری از قابلیت ها را به آن اضافه کنید تا رابط کاربری برنامه بهبود پیدا کنیم. در بخش امتحان کنید بعدی، که درون رویداد SelectedIndexChanged مربوط به ListBox را به گونه ای تغییر خواهد داد تا هر بار که مشترک جدیدی را از ListBox انتخاب کنید، اطلاعات او بر روی صفحه نمایش داده می شود.
امتحان کنید:نمایش اطلاعات مشترک انتخاب شده در صفحه
-
در بخش طراحی فرم بر روی لیست باکس دوبار کلیک کنید. به این ترتیب متد مربوط به رویداد SelectedIndexChanged به طور اتوماتیک ایجاد می شود کد مشخص شده در زیر را به این متد اضافه کنید :
-
برنامه را اجرا کنید و بر روی دکمه ی فرمان Test کلیک کنید تا ایتم مورد نیاز ListBox قرار گیرند. حال اگر بر روی نام یکی از مشترکین در لیست باکس کلیک کنید همانند شکل زیر اطلاعات او در کادر های متنی روی فرم نمایش داده می شوند.
لینک دانلود پروژه Structure Demo
چگونه کار می کند؟؟
ArrayList یکی از انواع کلکسیون های موجود در .NET است که از آن استفاده زیادی شده است. یک کلکسیون راهی است برای ساختن راحت گروه هایی از عناصر مرتبط به هم. اگر برنامه ی Structure Demo نگاهی بیندازید و کد تابع CreateCustomer را مشاهده کنید متوجه می شوید که برای اضافه کردن یک مشترک به لیست، همانند اضافه کردن یک مسترک به لیست پیوندی از تابع Add استفاده می کردید.
برای حذف یک مشترک هم(چه در لیست باکس و چه در لیست پیوندی) از متد Remove استفاده کردید:

امیدوارم از آموزش خوشتون اومده باشه(نظر در مورد نحوه آموزش یادتون نره)
برچسبها:
تاريخ : چهارشنبه 29 مرداد 1393 | 07:55 | نویسنده : کـــــوچـــــولـــــو |
ارسال نظر(0)
لطفا از دیگر مطالب نیز دیدن فرمایید


















