PDA

View Full Version : سوال: لیستی شامل تمامی فرم های یک پروژه



smaill
چهارشنبه 20 خرداد 1388, 18:28 عصر
با سلام خدمت دوستان.

می خواستم بپرسم آیا در یک پروژه سی شارپ لیستی شامل تمامی فرم های یک پروژه وجود

دارد،یا خیر.

با تشکر.

SMRAH1
چهارشنبه 20 خرداد 1388, 19:23 عصر
منظورتون در هنگام اجرای برنامه است یا هر هنگام برنامه نویسی (IDE)!؟

smaill
پنج شنبه 21 خرداد 1388, 09:05 صبح
سلام.

در هر هنگام.

mohsen_csharp
پنج شنبه 21 خرداد 1388, 12:14 عصر
با سلام

Application.OpenForms
فرم های باز کنونی را می دهد

smaill
پنج شنبه 21 خرداد 1388, 18:33 عصر
با سلام.

:متفکر:شاید بهتر بود سوالم را این طور مطرح کنم کا ایا تابعی یا .. وجود دارد که تنها با گرفتن نام

یک فرم به صورت رشته، آن را باز کند.

متشکرم.

SMRAH1
پنج شنبه 21 خرداد 1388, 19:08 عصر
سلام

جواب ساده : خیر!
جواب حرفه ای : می شه یه کارایی کرد.برای این منظور می تونید از Reflector ها استفاده کنید و اسمبلی جاری را مرور تا به نام فرم مورد نظر برسید و اون رو اجرا کنید (اگر حرفه ای نمی خواهید کار کنید ،پیشنهاد می کنم خیلی به این روش فکر نکنید!)

موفق باشی

mohsen_csharp
پنج شنبه 21 خرداد 1388, 20:06 عصر
شاید بهتر بود سوالم را این طور مطرح کنم کا ایا تابعی یا .. وجود دارد که تنها با گرفتن نام
یک فرم به صورت رشته، آن را باز کند.
منظور شما رو متوجه شدیم ولی یکم بیشتر توضیح بدید که در کل چه کاری می خواهید انجام دهید؟
تا بهتر شما رو راهنمایی کنیم.

smaill
شنبه 23 خرداد 1388, 09:06 صبح
منظور شما رو متوجه شدیم ولی یکم بیشتر توضیح بدید که در کل چه کاری می خواهید انجام دهید؟
تا بهتر شما رو راهنمایی کنیم.


با سلام.

من یک برنامه دارم که مجبورم نام فرم اجرایی را از پایگاه بخونم .چون رشته برگشتی از پایگاه

را نمی توان برای گرفتن شی استفاده کرد یک راه حل ساده و ابتدایی این است که به طور ثابت

لیستی از فرم ها را ایجاد کنیم و در آن جستجو کنیم ولی من احتمال دادم که خود سی شارپ

این لیست رو داشته باشه و یا تابع ای که نام فرم را به صورت رشته گرفته و آن را باز کند.

امید وارم که منظورم رو خوب گفته باشم .منتظر یاری شما هستم.

متشکرم

NewFoxStudent
شنبه 23 خرداد 1388, 09:46 صبح
چون رشته برگشتی از پایگاه را نمی توان برای گرفتن شی استفاده کرد

این جمله یکمی اشتباه
شما میتونید با استفاده از نام فرم که به صورت رشته از پایگاه دریافت میکنید یک نمونه از فرم بسازید
روش این کار هم به این صورت



Form frm = (Form)System.Reflection.Assembly.GetEntryAssembly( ).CreateInstance("MySolutionName.MyNameSpaceName.MyClassName");

توی کد بالا توجه کنید که MySolutionName نام پروژه شماست و MyNameSpaceName نام فضای نامی که فرمهاتون رو اونجا ساختید و اگه فرمهاتون رو توی ریشه پروژه ساختید باید MyNameSpaceName رو حذف کنید

به عنوان مثال من همیشه فرمهای پروژه رو توی یه پوشه به نام forms میسازم و برای ساختن نمونه به این صورت عمل میکنم


Attendence.forms.frmLeaveType frm = new Attendence.forms.frmLeaveType()

حالا با توجه به کد بالا برای ساختن نمونه شی با استفاده از نام اون باید اینطوری بنویسیم



string strInstance = "Attendence.forms.frmLeaveType()";
System.Reflection.Assembly.GetEntryAssembly().Crea teInstance(strInstance);

smaill
شنبه 23 خرداد 1388, 10:26 صبح
با سلام NewFoxStudent از راهنماییت متشکرم.

من این کد را تست کردم ولی با پیام Object reference not set to an instance of an object. مواجه می

شوم، در صورتی که وقتی به صورت مستقیم با استفاده از روش شما از فرم شی گرفته و دستور show را

می نویسم آن را اجرا می کند.ممنون می شم راهنمایی کنید.

NewFoxStudent
شنبه 23 خرداد 1388, 12:17 عصر
ببخشید باید اول یه متغیر از نوع Form ایجاد کنید و بعد ازش استفاده کنید


Form frm = new Form();
frm = (Form)Assembly.GetEntryAssembly().CreateInstance("MySolution.MyNameSpace.MyForm");
frm.Show();

smaill
شنبه 23 خرداد 1388, 12:45 عصر
سلام.

شرمنده ، باز هم با این خطا مواجه می شوم.

NewFoxStudent
شنبه 23 خرداد 1388, 13:07 عصر
ممکنه تیکه کدتون رو اینجا بزارید

smaill
شنبه 23 خرداد 1388, 13:29 عصر
ممکنه تیکه کدتون رو اینجا بزارید

کد:




();Form frm = new Form

frm = (Form)System.Reflection.Assembly.GetEntryAssembly( ).CreateInstance("WindowsFormsApplication2.LoginFrm()");

frm.Showxfrm.Showfrm.Show();


در نام فرم یا پروژه مشکلی وجود ندارد.

NewFoxStudent
شنبه 23 خرداد 1388, 13:36 عصر
اون فاصله توی کدتون وجود داره
پرانتز های بعد از Loginfrm رو هم بردارید

();Form frm = new Form

frm = (Form)System.Reflection.Assembly.GetEntryAssembly( ).CreateInstance("WindowsFormsApplication2.LoginFr m()");

frm.Showxfrm.Showfrm.Show();

NewFoxStudent
شنبه 23 خرداد 1388, 18:52 عصر
من فراموش کردم منبع این پستها رو اعلام کنم
توی تاپیک 1001 نکته یه لینک هست با عنوان کار رکدن با اشیا توسط نام آنها
دوست عزیز مشکلتون حل شد یا نه

smaill
یک شنبه 24 خرداد 1388, 07:35 صبح
دوست عزیز مشکلتون حل شد یا نه

سلام.

مشکل همان پرانتز های بعد از اسم فرم بود.NewFoxStudent جان بابت کمکتون متشکرم