PDA

View Full Version : سوال: لیست فرمهای application



TAK_C#Programmer
شنبه 14 شهریور 1388, 09:47 صبح
با سلام
میخواستم ببینم جطوری میشه لیست فرمهای یک application را بدست آورد. من می خوام به هر فرم در برنامه یک سری صفات را تخصیص بدم که احتمالا باید از ID فرم در net. استفاده کنم ولی نمدونم جطوری ؟
لطفا راهنمایی کنید

M.YasPro
شنبه 14 شهریور 1388, 10:27 صبح
سلام
برای دسترسی به فرمهای برنامت :


Application.OpenForms["Inex or Name"].Property=Value;

TAK_C#Programmer
شنبه 14 شهریور 1388, 11:57 صبح
ممنون
دوست عزیز من یک dll دارم که به یک application اضافه شده و از طریق آن (dll)میخام به تمام فرمهای application چه فرم باز و جه فرم بسته دسترسی داشته باشم.البته فقط نام (Name) فرم واسم کافیه
آیا دستوری که شما نوشتی به این خواسته من جواب میده؟؟ وگرنه چکار باید بکنم
باتشکر

M.YasPro
شنبه 14 شهریور 1388, 13:45 عصر
ممنون
دوست عزیز من یک dll دارم که به یک application اضافه شده و از طریق آن (dll)میخام به تمام فرمهای application چه فرم باز و جه فرم بسته دسترسی داشته باشم
منظورتون رو واضح تر بگید
dll چی هست ?
کارش چیه؟

TAK_C#Programmer
شنبه 14 شهریور 1388, 16:39 عصر
این dllوظیفه تعیین میزان دسترسی کاربر به فرمهای application را به عهده دارد. پس من باید لیست تمام فرمهای application را داشته باشم.از طرفی ممکن است این applcationتغییر کند و در نتیجه فرمها هم تغییر خواهد کرد ، به همین دلیل باید لیست فرمها به صورت run time استخراج شود.

TAK_C#Programmer
یک شنبه 15 شهریور 1388, 07:22 صبح
لطفا اگه کسی جواب سوال منو میدونه به من جواب بده
ممنون

M.YasPro
یک شنبه 15 شهریور 1388, 09:45 صبح
خوب اگه موقع اجرا تازه بهش لیست فرمها رو بدید چه جوری میخواین بهش بگین که کی به چه فرمی دسترسی داشته باشه؟
DLL رو خودتون نوشتین؟

TAK_C#Programmer
یک شنبه 15 شهریور 1388, 10:56 صبح
وقتی application اجرا میشه از طریق dll اول کاربر تعریف میشه بعد باید فرمهای application بدست بیاریم تا به هر کاربر دسترسی لازم به فرم ها را اختصاص بدیم. لیست فرم ها در یک combo یا listbox که در userControl یا همان (dll) هست باید نمایش داده شود تا دسترسی ها مشخص گردد.

Ali_M.Eghbaldar
جمعه 27 شهریور 1388, 00:47 صبح
کسی نمیدونه چطوری باید لیست تمام فرم ها گرفت؟
چه باز و چه بسته؟

alireza_tavakol
جمعه 27 شهریور 1388, 01:53 صبح
تنها چیزی که من می دونم اینکه : شما می توانی فایل project_name.csproj رو باز کنی ( فایلی است با فرمت XML ) توی این فایل اسم تمام کلاس های مورد استفاده پروژه هست

حالا باید به نحوی تشخیص بدی کدام یک از این کلاس ها از کلاس فرم ارث بری داره و قبل از اجرا شده فایل exe نام فرم ها رو در یک فایل کنار فایل اجرایی ذخیره کنی

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

( راه منطقی نسیت ولی شاید مشکلت رو حل کنه)

Amir Oveisi
جمعه 27 شهریور 1388, 03:40 صبح
از Reflection استفاده كنيد و همه كلاس هاي موجود رو بدست بياريد. از بين كلاس ها، كلاسي كه از كلاس Form ارث برده باشه فرم خواهد بود.


using System.Reflection;

string[] GetFormsName()
{
List<string> names = new List<string>();
Assembly asm = Assembly.GetExcutingAssembly();
foreach(Type t in asm.GetTypes)
{
if(t.IsSubclassOf(System.Windows.Forms.Form))
{
names.Add(t.Name);
}
}
return names.ToArray();
}


موفق باشيد

اَرژنگ
جمعه 27 شهریور 1388, 04:13 صبح
هر وقت دیدید که برایه انجام یک کار ساده در برنامه‌تان احتیاج دارید که از روشهایه پیچیده استفاده کنید، بدانید یکجایه معماریتان خراب است.

طبقه استفاده از Application Open Formsاز طبقه برنامه پائینتر است (Lower Level).
به جایه پیدا کردن اینکه چطوری به در سطح پائین دست اندازی کنید، کمبودها را در سطح برنامه مهیا کنید.

behzadk
جمعه 27 شهریور 1388, 10:14 صبح
به این یه نگاهی کن مشکلت فکر کنم حل بشه
http://www.barnamenevis.org/forum/showthread.php?t=165968

Amir Oveisi
جمعه 27 شهریور 1388, 10:52 صبح
لينكي كه داديد جوابش درست نيست، چون اونجا گفته هر فرم نوع داده اش Form هست كه اين درست نيست و در واقع هر فرم خودش يك type (كلاس)محسوب ميشه كه از كلاسForm ارث برده و اين موضوع در لينك شما ناديده گرفته شده.

موفق باشيد