PDA

View Full Version : سوال: اضافه کردن خصوصیاتی مثل Tag به تمام فرمها



sadaf_
دوشنبه 20 آذر 1391, 10:34 صبح
با سلام
چطوری می تونم به همه فرمها یک خصوصیت اضافه کنم ؟
که visual مثل tag به طور رسمی بشناسه

sadaf_
دوشنبه 20 آذر 1391, 17:08 عصر
دوستان لطفا راهنمایی کنید

behzadkhatari
دوشنبه 20 آذر 1391, 20:29 عصر
باید یک user control بسازید و ازون بجای فرم استفاده کنید

gwbasic
دوشنبه 20 آذر 1391, 20:45 عصر
به صورت زیر

public class BaseForm : Form
{
public string SomeProperty { get; set}
}


در ادامه تمام فرم های مورد نظرتون رو از BaseForm بجای Form‌ارث بری کنید


public class Form1 : BaseForm
{
}

sadaf_
سه شنبه 21 آذر 1391, 23:40 عصر
باید یک user control بسازید و ازون بجای فرم استفاده کنید
این روش اصلا به کار من نمی یاد

sadaf_
سه شنبه 21 آذر 1391, 23:49 عصر
به صورت زیر

public class BaseForm : Form
{
public string SomeProperty { get; set}
}


در ادامه تمام فرم های مورد نظرتون رو از BaseForm بجای Form‌ارث بری کنید


public class Form1 : BaseForm
{
}


با تشکر از شما
اما باز هم این روش جوابگو نیست
چون وقتی که با این دستور

int i = 0;
foreach (Form f in Application.OpenForms)
{
f.Tag = i.ToString();
i++;
}

می تونم به Tag مقدار دهی کنم اون نام متغیر را نمی شناسه
چطوری می شه یک خصوصیتی مثل Tag درست کرد؟

Mahmoud.Afrad
چهارشنبه 22 آذر 1391, 00:28 صبح
با تشکر از شما
اما باز هم این روش جوابگو نیست
چون وقتی که با این دستور

int i = 0;
foreach (Form f in Application.OpenForms)
{
f.Tag = i.ToString();
i++;
}

می تونم به Tag مقدار دهی کنم اون نام متغیر را نمی شناسه
چطوری می شه یک خصوصیتی مثل Tag درست کرد؟
خروجی application.openforms کلکسیونی از Form هست که باید بررسی کنید که کدوم فرم از جنس BaseForm هست:
int i=0;
foreach (Form form in Application.OpenForms)
{
if (form is BaseForm)
{
BaseForm frm = form as BaseForm;
frm.SomeProperty = i.ToString();
i++;
}
}
و یا به اینصورت:

//using System.Linq;

foreach (BaseForm frm in Application.OpenForms.OfType<BaseForm>())
{
frm.SomeProperty = i.ToString();
i++;
}

hakim22
چهارشنبه 22 آذر 1391, 10:03 صبح
شما باید از Extension Method استفاده کنید ( دات نت 4)

این قابلیت به شما امکان میده بدون دسترسی داشتن به اصل یک کلاس به اون کلاس خاصیت یا متد جدید اضافه کنید.
کار باهاش سخت نیست.

مثال :

http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx