PDA

View Full Version : انتخاب فرم های درون پروژه



Kubuntu
شنبه 16 شهریور 1392, 18:53 عصر
فرض کنید که یک برنامه حسابداری دارید و می خواهید در بخش مدیریت برنامه به کاربران دسترسی مختلف بدهید.
مشکل من در ایجاد ظاهر فرمی است که کاربر ادمین می تواند دسترسی را مشخص کند.
من می خام این checkedListBox های موجود در فرم با استفاده از کد ایجاد شود نه دستی.
واسه این کار نیاز به فراخانی تمامی فرم های پروژه ام دارم.
می شه بگید چه کدی تمامی فرمها رو بهم می دهد بطوری که بتونم به کنترلها و خصوصیات هر فرم دسترسی داشته باشم.
یه نمونه کد در reflection دارم ولی چون خودم رفلکشن رو بلد نیستم نمی دونم چجوری باید بندازم تو حلقه foreach

var q = from t in Assembly.GetExecutingAssembly().GetTypes()
where t.IsClass && t == typeof(System.Windows.Forms.Form)
select t;

کمکم کنید لطفا :بوس:

Kubuntu
شنبه 16 شهریور 1392, 22:51 عصر
باید از کد زیر استفاده کنید:
List<string> @namespace = new List<string>(new string[] { "list1._1", "list1"});
for (int i = 0; i < @namespace.Count; i++ )
{
var q = from t in Assembly.GetExecutingAssembly().GetTypes()
where t.IsClass && t.Namespace == @namespace[i]
select t;
q.ToList().ForEach(t => MessageBox.Show(t.Name.ToString()));
}
"list1._1"و "list1" فضای نامهای پروژه اند.

مرجع:
get all of forms in project before loaded (http://www.codeproject.com/Answers/650167/get-all-of-forms-in-project-before-loaded#answer2)

update:
متاسفانه این کد ج من نیست چون فقط فایلها را با تایپ کلاس برمی گردونه نه شئ.
البته کد مفیدی هم می تونه باشه برای بعضی دوستان.

mousa1992
یک شنبه 17 شهریور 1392, 00:37 صبح
بهتر بگی دقیقا چیکار میخوای کنی
کارتون غیر اصولیه شما میخواین تمام کنترل هایی که نیاز به دسترسی بهشون دارید رو public کنید !
چرا برا سطح دسترسی ها نیاز داری که همه فرم هارو بگیری و به کنترل هاشون دسترسی داشته باشی ؟

Kubuntu
یک شنبه 17 شهریور 1392, 11:53 صبح
بهتر بگی دقیقا چیکار میخوای کنی
کارتون غیر اصولیه شما میخواین تمام کنترل هایی که نیاز به دسترسی بهشون دارید رو public کنید !
چرا برا سطح دسترسی ها نیاز داری که همه فرم هارو بگیری و به کنترل هاشون دسترسی داشته باشی ؟
لطفا به خط اول و دوم تاپیک مراجعه شود.
ممنون