PDA

View Full Version : دسترسی به شیء فراخوانی كننده



m-khorsandi
یک شنبه 17 خرداد 1388, 17:15 عصر
چطور ميتونم از كلاسی به يك پراپرتی از فرم اصلی دسترسی داشته باشم؟

__H2__
دوشنبه 18 خرداد 1388, 14:16 عصر
سلام
در VB.Net میتوان از دستور My.Application.ApplicationContext.MainForm استفاده کرد. (به شرط از کار فعال بودن فضای My)

=====

ولی راه منطقی و اصول شی گرایی آن است که اشاره گر را در قالب یک property و یا در سازنده کلاس به آن متقل کنید.

مثلاً به الگوی زیر دقت کنید:


public class Class1
{
private System.Windows.Forms.Form m_Form;

public Class1(System.Windows.Forms.Form form)
{
this.m_Form = form;
}

//...

public void test(...)
{
this.m_Form.XXXXX = YYYYY;
}
}

//...

public class frmMain : System.Windows.Forms.Form
{
//...
Class1 x = new Class1(this);
x.test(...);
//...
}


=====

ولی اگر فقط و فقط میخواهید این عمل را روی فرم اصلی و تک برنامه انجام دهید، میتوانید فایل Program.cs را بدین شکل تغغیر دهید:
(برای سایر فرمها اینکار چندان منطقی نیست و با اصول برنامه نویسی ساختار سیافته مقایرت پیدا میکند.)



public static class Program
{
private static System.Windows.Forms.Form m_MainForm;

internal static System.Windows.Forms.Form MainForm
{
get { return m_MainForm; }
}

[STAThread]public static void Main()
{
System.Windows.Forms.Application.EnableVisualStyle s();
System.Windows.Forms.Application.SetCompatibleText RenderingDefault(false);

m_MainForm = new Form1();
System.Windows.Forms.Application.Run(m_MainForm);
}
}

1- به جای System.Windows.Forms.Form میتوانید نام کلاس فرم اصلی برنامه را تایپ کنید.
2- حالا در هر کجای برنامه نیاز به فرم اصلی داشتید با دستور Program.MainForm در دسترس خواهد بود.

=====

موفق باشید.