PDA

View Full Version : سوال: بدست آوردن فرم جاری



dark-man
چهارشنبه 06 آذر 1387, 19:28 عصر
سلام خدمت دوستان . من 3 تا فرم دارم . در فرم اصلی یک دکمه هست . این دکمه یک سری اطلاعات رو به یکی از دو فرم دیگه پاس میده . چه جوری تو همین دکمه کاری کنم که اگه فرم 2 باز باز بود x رو پاس بده . یا اگه فرم 3 باز بود y رو پاس بده . فرم ها با متد show فراخوانی می شوند .

قبلا" از راهنمائیتون ممنونم .

mehdi.mousavi
پنج شنبه 07 آذر 1387, 10:47 صبح
سلام خدمت دوستان . من 3 تا فرم دارم . در فرم اصلی یک دکمه هست . این دکمه یک سری اطلاعات رو به یکی از دو فرم دیگه پاس میده . چه جوری تو همین دکمه کاری کنم که اگه فرم 2 باز باز بود x رو پاس بده . یا اگه فرم 3 باز بود y رو پاس بده . فرم ها با متد show فراخوانی می شوند . قبلا" از راهنمائیتون ممنونم .

سلام.
Office Automation Model یا همون مدلی که نرم افزارهای Office از اون استفاده میکنن، یکی از بهترین انتخابها برای نرم افزارهای Windows Form ای هستش. برای همین بهتون توصیه میکنم، نحوه طراحی برنامه رو تغییر بدید و به این سبک برنامه رو طراحی کنید.

به اعتقاد من عدم استفاده از یک مدل مناسب در برنامه، باعث تحمیل سختیها، محدودیتها و دوباره کاریهایی در انجام پروژه میشه که استفاده از یک مدل مناسب میتونه اونها رو محو میکنه.

پیدا کردن یک فرم باز تو برنامه با گذاشتن یکی دو متغیر رفع میشه، اما پیچیدگیهایی رو به کار تحمیل میکنه که مطلقا نیازی به اونها نیست. فرض کنید غیر از پنجره اصلی برنامه، دو پنجره باز دیگه هم دارید، و در اون دو پنجره کاربر تغییراتی اعمال کرده. حالا کاربر پنجره اصلی رو میبنده. روش صحیح تو این مرحله، اینه که هر یک از دو پنجره به ترتیب جلو بیان، و روی هر کدوم پرسیده بشه که "این اطلاعات رو هنوز ذخیره نکردین، میخواهید اینکارو کنید؟" و کاربر بتونه بگه بله، نه، و Cancel. اگر شما مدل نداشته باشید، چطور میخواهید این کارو کنید؟

بازم میشه با چند تا متغیر اینم سنبل کرد و ... اما همین کدهای نابسمان تولید شده برای رفع مشکلات کوچک پیش اومده، در پایان پروژه تبدیل به یک کابوس هنگام نگهداری پروژه میشه. همه اینها رو گفتم تا چشمتون رو به فرایندهایی که قبلا به این منظور طراحی شدن باز کنم، و بهتون این اطمینان رو بدم که اگر از OAM استفاده کنید، نه تنها ضرر نمیکنید، بلکه در نهایت پروژه ای خواهید داشت که به روش مهندسی طراحی شده.

پاورقی: وقتی پنجره ای رو باز میکنید، Reference به اونو جایی نگه دارید، تا هنگام نیاز، بتونید چک کنید که آیا اون Reference تهی هستش یا خیر. اگر تهی نبود، پس یک پنجره بازه. اما کدوم پنجره؟ اینو میتونید از Type اون Reference متوجه بشید. سپس، میتونید با استفاده از یک Public Property متغیر x و y مورد نظرتون رو بهش پاس کنید. (اما بازم تکرار میکنم، از یک Model مناسب در نرم افزارتون بهره بگیرید و به این روشهای بزن و برو متوسل نشید).

dark-man
پنج شنبه 07 آذر 1387, 11:06 صبح
سلام.
Office Automation Model یا همون مدلی که نرم افزارهای Office از اون استفاده میکنن، یکی از بهترین انتخابها برای نرم افزارهای Windows Form ای هستش. برای همین بهتون توصیه میکنم، نحوه طراحی برنامه رو تغییر بدید و به این سبک برنامه رو طراحی کنید.

به اعتقاد من عدم استفاده از یک مدل مناسب در برنامه، باعث تحمیل سختیها، محدودیتها و دوباره کاریهایی در انجام پروژه میشه که استفاده از یک مدل مناسب میتونه اونها رو محو میکنه.

پیدا کردن یک فرم باز تو برنامه با گذاشتن یکی دو متغیر رفع میشه، اما پیچیدگیهایی رو به کار تحمیل میکنه که مطلقا نیازی به اونها نیست. فرض کنید غیر از پنجره اصلی برنامه، دو پنجره باز دیگه هم دارید، و در اون دو پنجره کاربر تغییراتی اعمال کرده. حالا کاربر پنجره اصلی رو میبنده. روش صحیح تو این مرحله، اینه که هر یک از دو پنجره به ترتیب جلو بیان، و روی هر کدوم پرسیده بشه که "این اطلاعات رو هنوز ذخیره نکردین، میخواهید اینکارو کنید؟" و کاربر بتونه بگه بله، نه، و Cancel. اگر شما مدل نداشته باشید، چطور میخواهید این کارو کنید؟

بازم میشه با چند تا متغیر اینم سنبل کرد و ... اما همین کدهای نابسمان تولید شده برای رفع مشکلات کوچک پیش اومده، در پایان پروژه تبدیل به یک کابوس هنگام نگهداری پروژه میشه. همه اینها رو گفتم تا چشمتون رو به فرایندهایی که قبلا به این منظور طراحی شدن باز کنم، و بهتون این اطمینان رو بدم که اگر از OAM استفاده کنید، نه تنها ضرر نمیکنید، بلکه در نهایت پروژه ای خواهید داشت که به روش مهندسی طراحی شده.

پاورقی: وقتی پنجره ای رو باز میکنید، Reference به اونو جایی نگه دارید، تا هنگام نیاز، بتونید چک کنید که آیا اون Reference تهی هستش یا خیر. اگر تهی نبود، پس یک پنجره بازه. اما کدوم پنجره؟ اینو میتونید از Type اون Reference متوجه بشید. سپس، میتونید با استفاده از یک Public Property متغیر x و y مورد نظرتون رو بهش پاس کنید. (اما بازم تکرار میکنم، از یک Model مناسب در نرم افزارتون بهره بگیرید و به این روشهای بزن و برو متوسل نشید).



از راهنمائی که کردید ممنونم . من مدت زیادی نیست که با #C کار می کنم و فکر کنم برای یک تازه کار این موارد و مشکلات عادی باشه . ممنون میشم اگه در مورد Office Automation Model مرجع یا راهنمائی رو معرفی کنید تا بتونم ازش استفاده کنم

mehdi.mousavi
پنج شنبه 07 آذر 1387, 11:12 صبح
از راهنمائی که کردید ممنونم . من مدت زیادی نیست که با #C کار می کنم و فکر کنم برای یک تازه کار این موارد و مشکلات عادی باشه . ممنون میشم اگه در مورد Office Automation Model مرجع یا راهنمائی رو معرفی کنید تا بتونم ازش استفاده کنم

سلام.
برای شروع، میتونید به این مقاله ها رجوع کنید:

Implement a Microsoft Word-like Object Model for Your .NET Framework Application (http://msdn.microsoft.com/en-us/library/ms973253.aspx)

Developing Next Generation Smart Clients using .NET 2.0 working with Existing .NET 1.1 SOA-based XML Web Services (http://www.codeproject.com/KB/smart/SmartClientSOA.aspx)

smt_414
پنج شنبه 07 آذر 1387, 11:20 صبح
سلام

معمولا با جستجو خیلی سریعتر میشه به جواب رسید
چون اکثر مطالب در گذشته پرسیده شدند

پست 11 این (http://barnamenevis.org/forum/showthread.php?p=640090&posted=1#post640090) لینک رو ببینید


موفق باشید

saeed-kh
پنج شنبه 07 آذر 1387, 22:39 عصر
میتونی خاصیت Nameو خاصیت Text فرم جاری رو از این دستور بدست بیاری

System.Windows.Forms.Form.ActiveForm