PDA

View Full Version : سوال: نشان دادن اطلاعات یک فرم داخل یک فرم اصلی



behruz1212
چهارشنبه 02 مرداد 1392, 20:21 عصر
سلام دوستان :
من تو پروژم 5 تا فرم دارم و یک فرم بنام اصلی
میخوام اگه فرم 1 لود شد شماره فرمش داخل یک تکست تو فرم اصلی نمایش داده بشه
اگه فرم 2 لود شد شماره فرم 2 داخل فرم اصلی نشون داده بشه
و به همین ترتیت هر کدوم از فرما که لود شد شماره فرمش داخل فرم اصلی نمایس داده بشه
لطفا راهنماییم کنین مممنون

mousa1992
چهارشنبه 02 مرداد 1392, 21:45 عصر
لینک 1 (http://barnamenevis.org/showthread.php?409119-%DA%86%D9%86%D8%AF-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-2%D8%AA%D8%A7-%D9%81%D8%B1%D9%85&p=1823667#post1823667)
و 2 (http://barnamenevis.org/showthread.php?408687-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%DB%8C%DA%A9-picturebox-%D8%A7%D8%B2-%D8%AF%D8%A7%D8%AE%D9%84-%D9%81%D8%B1%D9%85-%D8%AF%DB%8C%DA%AF%D8%B1&p=1820628#post1820628)

اینم نوشتم که بشه 10 کارکتر و پست کنم

موفق

behruz1212
چهارشنبه 02 مرداد 1392, 22:06 عصر
خب دوست عزیز وقتی فرم 3 رو میخوام لود کنم رو این خط ارور میده

(Form2)Application.OpenForms["Form2"]

mousa1992
چهارشنبه 02 مرداد 1392, 22:31 عصر
دوست خوبم توضیحاتو کامل نخوندی تو لینک ها
این کدی که بالا قرار دادی برا پیدا کردن نمونه های ساخته شده از فرم ها هست
خب شما فرض کن دوتا فرم داری فرم 1 و 2 حالا میخوای با باز کردن فرم 2 اسمش توی فرم 1 بیاد برا این کار باید هر متغیری و یا کنترلی رو از فرم 1 که میخوای اسم توی اون نشون داده بشه و یا ذخیره بشه رو با سطح دسترسی public تعریف کنی و تو فرم 2 در رویداد لود باید نمونه ایجاد شده از فرم 1 رو پیدا کنی که با کد بالا امکان پذیر هست و به کنترل ها و یا متغیرها و یا خواص مورد نظرت مقدار میدی

موفق باشی

behzadkhan
چهارشنبه 02 مرداد 1392, 22:51 عصر
با سلام

در حالت کلی اگر بخواهیم هر جای برنامه به فرم اصلی دسترسی داشته باشیم می توانیم با یک تغییر در کلاس اصلی (کلاس Program) و تابع اصلی (تابع Main) پروژه این کار را انجام دهیم.
برای این کار کد زیر که در فایل Program.cs و جود دارد:


[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);

Application.Run(new frmMain());
}


به کد زیر تغییر می دهیم:


public static frmMain myForm;

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
myForm = new frmMain();
Application.Run(myForm);

}



حالا مثلا در هنگام لود شدن فرم شماره دو در رویداد Load می توانیم به شکل زیر به فرم اصلی دسترسی داشته باشیم :



private void Form2_Load(object sender, EventArgs e)
{
Program.myForm.Text = "Form 2 Loaded";
}



حالا اگر بخواهیم به یک کنترل در فرم اصلی دسترسی داشته باشیم که منظور شما یک Textbox می باشد باید نوع Property کنترل مورد نظرمان را از private به public تغییر دهیم برای این کار به شکل زیر عمل می کنیم:

فرض کنیم اسم فرم اصلی ما MainForm و نام کنترل موردنظرمان txtFormName.

حالا باید فایل MainForm.Designer.cs پیدا کرده و کد زیر را در آن پیدا کنیم:


private System.Windows.Forms.TextBox txtCustomerName;


حالا فقط کافیست کلمه private را به puplic تغییر دهیم.

==========================================

حالا در هر جای پروژه برای تغییر متن کنترل txtFormName کافیست کد زیر را بنویسیم :


Program.txtFormName.Text = "Form 2 Loaded";


با تشکر

behzadkhan
چهارشنبه 02 مرداد 1392, 22:55 عصر
با سلام

فکر کنم یک اشتباهی در آخر پست انجام دادم لطفا کد آخر را به:


Program.myForm.txtFormName.Text = "Form 2 Loaded";

nima@11
چهارشنبه 02 مرداد 1392, 23:19 عصر
سلام
دوست عزیز شما می تونی یک متغیر از نوع عمومی سراسری تعریف کنی. هر وقت که خواستی یک فرم را باز کنی توی فرم لود به متغیر مقدار دلخواه رو بدی.