انتقال اطلاعات بین فرمها
چهارشنبه, دی ۲۳, ۱۳۸۸ ۱۴:۱۵انتقال اطلاعات بین فرمها
وقتی پنجرهها حرف میزنند
در برنامهنویسی نرمافزارهای ویندوزی ، انتقال اطلاعات میان فرمها یکی از مشکلاتی است که برنامهنویسان مبتدی ویندوز با آن روبرو میشوند. بگذارید مشکل را با یک مثال بهطور واضحتر بررسی کنیم. فرض کنید فرمی دارید که اطلاعات کلی در آن بهنمایش در میآید حال شما نیاز دارید اطلاعات کلی را با جزئیات بیشتر ملاحظه کنید یا اینکه تکتک آنها را در بهطور جداگانه مورد بررسی و ویرایش و حذف قرار دهید. برای این کار شما نیاز دارید که اطلاعات را از یک فرم به فرم دیگر انتقال دهید. برای این کار راههای متفاوتی وجود دارد که در این مقاله قصد داریم چند مورد از آنها را بررسی کنیم.

۱- انتقال از طریق سازنده کلاس فرم: در این روش شما اطلاعات مورد نظر را به سازنده یک فرم پاس میدهید و در فرم این اطلاعات را بازیابی میکنید.
۲- دسترسی به فیلدهای عمومی یک کلاس فرم: در این روش فیلدهایی را در کلاس فرم فرزند تعریف میکنیم و با ساختن یک نمونه از آن و دسترسی به فیلدها آنها را مقداردهی میکنیم (این روش سادهترین روش است واستفاده از آن به هیچوجه توصیه نمیشود).
۳- استفاده از ویژگیها: در این روش شما یک ویژگی (Property) در کلاس فرم فرزند تعریف میکنید و با انتقال اطلاعات به آن آنها را در فرم فرزند مورد بررسی قرار میدهید، برای استفاده از این روش یک نکته را باید در نظر بگیرید، اینکه ویژگیها در زمان ساختن یک نمونه از کلاس مقادیر پیشفرض میگیرند و بعد از ساختن یک نمونه از کلاس نیاز هست که ویژگیها مقداردهی شوند و دسترسی به دادهها در متدهای Getter و Setter آنها مورد استفاده قرار میگیرند.
۴- استفاده از Tag: پیش از اینکه این روش را توضیح دهیم بگذارید یک بررسی در مورد تگها داشته باشیم. تعریفی که مایکروسافت از تگ ارائه داده، این است: «تگ، یک شیء است که دادههای یک کنترل را میگیرد یا برمیگرداند.» مقدار تگ یک نمونه از کلاس System.Object در net. را قبول میکند، همانطور که میدانید System.Object پدر تمام کلاسها و ساختارها در net. است، پس میتوان در تگ هر آبجکتی را قرارداد. برای مثال شما میتوانید یک DataTable که شامل دادههای شما است را در تگ قرار دهید یا حتی یک فرم را در آن قرار دهید. البته این روش شبیه روش۳ است؛ یعنی شما از یک ویژگی استفاده میکنید، بهجای اینکه شما آنرا تعریف کنید خود net. آن را تعریف کرده است.
۵- در این روش از نماینده (Delegate): استفاده میکنیم، بهطور خلاصه نماینده یک اشارهگر به تابع است، بدین معنا که شما آدرس یک تابع را به یک نماینده میدهید و نماینده توسط مکانیزمی که دارد آنرا اجرا میکند، خوب چگونه از این روش استفاده کنیم، یک نماینده در فرم پدر تعریف میکنید این نماینده به متدی اشاره میکند که بهطور مثال یک DataTable را دریافت میکند. خوب حال در فرم فرزند شما یک تابع بهصورت عمومی تعریف میکنید که با تعریف نماینده همخوانی داشته باشد و مقدار نماینده در فرم پدر را برابر متد تعریف شده در فرم فرزند قرار میدهیم و سپس آنرا اجرا میکنیم.




