PDA

View Full Version : برگرداندن اطلاعات به فرم اصلی



akram_k
چهارشنبه 19 مهر 1391, 07:42 صبح
با سلام . من تو یه قسمت از برنامم یک فرم ( فرم 2 ) برای نمایش یک پیغام خاص گذاشتم که کاربر میتونه یکی از 3 دکمه موجود روی فرم رو انتخاب کنه و در فرم اصلی فراخواننده این فرم ( فرم 1 ) هم یک متغیر از نوع public قرار دادم که با توجه به دکمه انتخابی در فرم 2 مقدار میگیره ( مثلا اگه روی yes کلیک شد 1 و اگه روی no کلیک شد 2 و ... ) حالا نمیدونم توی رویداد کلیک دکمه هام چطور اون متغیر رو مقدار دهی کنم . ممنون میشم راهنماییم کنید .

malihehshajari
چهارشنبه 19 مهر 1391, 08:47 صبح
سلام
باید یک نمونه از کلاس فرم 1 در فرم 2 ایجاد کنید و بعد با استفاده از اون نمونه ، متغیرتون رو فراخوانی کنید و بهش مقدار بدید البته بهتره که متغیرتون رو استاتیک تعریف کنید

veniz2008
چهارشنبه 19 مهر 1391, 09:00 صبح
سلام. در فرم 1 و در partial یه متغیر سراسری بصورت زیر تعریف کنید :

public static int st;
در فرم 2 هم بصورت زیر ازش استفاده کنید:


//درون دکمه 1:
Form1.st = 1;
//درون دکمه 2 :
Form1.st = 2;

حسین شهریاری
چهارشنبه 19 مهر 1391, 09:01 صبح
عناصر استاتیک عناصری هستند که فقط یکبار ایجاد میگردند و میان تمامی اشیائی که از آن نمونه کلاس مشتق شده ، به اشتراک کذاشته میشود و فقط توسط نام کلاس مربوطه میتوان به آنها دسترسی داشت.
پس تو فرم1:

Public Static int ID;
وتوفرم2:

Form1.ID = value;
value همان مقدار مورد نظر شماست.
موفق باشید

Nima_kyan
چهارشنبه 19 مهر 1391, 09:15 صبح
من اومدم توی رویداد کلیک دکمه ام اینو اضافه کردم :

private void btnyes_Click(object sender, EventArgs e)
{
frm_customer_submit c = new frm_customer_submit();
c.i = 1;
Hide();
}
که frm_customer_submit همون فرم اصلیه و متغیر i از نوع static تعریف شده اما باز هم مقدار رو بر نمیگردونه . یعنی تو فرم اصلی مقدار تغییر نمیکنه
دوست عزیز مقدار تغییر میکنه ولی فرم اصلیت تو اون لحظه Refresh نمیشه.مگه اینکه یه بار دیگه اون فرم اصلی رو show کنی.
من هم همین مشکل رو دارم که میخوام فقط با بستن فرم دوم مقدار مثلا Label ای که رو فرم اول هستش Refresh بشه که متاسفانه تا حالا موفق نشدم.

akram_k
چهارشنبه 19 مهر 1391, 09:18 صبح
ممنونم با انتخاب نوع static مشکلم حل شد .