PDA

View Full Version : سوال: چطوری از داخل کلاس به اشیا روی فرم اصلی دسترسی داشته باشم



Anaswer
سه شنبه 18 تیر 1387, 22:03 عصر
سلام . یک فرم اصلی دارم و یکسری کلاس هم دارم که از نوع فرم نیستند ، می خواهم از داخل کلاس به اشیاء روی فرم اصلی دسترسی داشته باشم چطور باید این کار را انجام بدم. اگر ممکن که یک نمونه برنامه برای مثال قرار بدهید تا خوب متوجه بشم
مرسی

mohammad272005
سه شنبه 18 تیر 1387, 22:46 عصر
واسه اينكار من كلاس Program رو به اين ترتيب تغيير مي دم:


public static MainForm mainForm
{
get;
private set;
}

static main()
{
...
Program.MainForm = new MainForm();
Application.Run(Program.MainForm);
Program.MainForm.Dispose();
}
حالا هرجا كه بخوام مي تونم به MainForm كه همون فرم اصلا برنامه‏ام باشه دسترسي داشته باشم:
Program.MainForm.Text = "Test";

jeus
سه شنبه 18 تیر 1387, 22:49 عصر
من منظور شما را کامل نفهمیدم فرم خودش نقش یک کلاس را داره
میشه بیشتر توضیح بدید ؟

hdv212
سه شنبه 18 تیر 1387, 23:15 عصر
دوست عزیز میتونید به این تاپیکی (http://barnamenevis.org/forum/showpost.php?p=543181&postcount=24) که r.kiani عزیز نوشته مراجعه کنید.

rostamkhani
چهارشنبه 19 تیر 1387, 00:49 صبح
سلام
یک مثال ساده :

در ابتدا باید اشیایی که میخواهی به آنها میخواهی دسترسی داشته باشی باید
public باشن .
برای این کار از داخل پنجره Properties گزینه Modifiers شیئ مد نظر رو مثل Button1
از Private به Public تبدیل میکنی .
و برای دسترسی به فرم اصلی یا هر فرم دیگه میتونی اون فورم رو به کلاس مد نظر ارسال کنی مثل کد زیر

اگه از سازنده کلاس استفاده کنی


class Class1
{
Form1 frm1;
public Class1(Form1 frm)
{
frm.button1.BackColor = Color.Red;
frm1 = frm;
}
}


کد فرم


private void button1_Click(object sender, EventArgs e)
{
Class1 c1 = new Class1(this);
}



اگه از یک متد استفاده کنی


class Class2
{
Form1 frm1;
public void setForm(Form1 frm)
{
frm1 = frm;
frm1.Width = 50;
}
}

کد فرم


private void button2_Click(object sender, EventArgs e)
{
Class2 c2 = new Class2();
c2.setForm(this);
}



این شکلیم میشه


class Class3
{
Form1 frm1;
public Form1 Frm1
{
get
{
return frm1;
}
set
{
frm1 = value;
}
}
}


کد فرم


private void button3_Click(object sender, EventArgs e)
{
Class3 c3 = new Class3();
c3.Frm1 = this;
}



اینم مخصوص دسترسی آسان از یک فرم به فرم مالک


((Form1)this.Owner).button3.BackColor = Color.Red;

کد فرم


privatevoid button4_Click(object sender, EventArgs e)
{
Form2 frm2 = newForm2();
frm2.Owner = this;
frm2.Show();
}