PDA

View Full Version : سوال: <-: وراثت برعکس میشه؟؟



kkkaka
چهارشنبه 01 شهریور 1391, 15:26 عصر
سلام به همه
تو بحث وراثت داشتیم که فرم پدر نمیتونه از فرم فرزند ارث ببره
با توجه به اینکه ما ایرانی ها استاد انجام کارهای نا متعارف در عرصه تکنولوژی هستیم !:تشویق::چشمک:
میخواستم بدونم آیا راهی وجود داره که من بتونم یه مقدار رو به فرم پدر بفرستم؟
در اصل بنده قصد دارم وقتی عملیات درج در بانک اطلاعاتیم تو فرم فرزند انجام میشه کنترل دیتاگریدویوو در فرم پدر آپدیت بشه ولی هرکاری میکنم نمیتونم دیتا گرید ویوو رو بوسیله فرم فرزند آپدیت کنم.:گریه:

tooraj_azizi_1035
چهارشنبه 01 شهریور 1391, 15:34 عصر
سلام
این سوال اصلاً به وراثت ربطی نداره، شما باید TableAdapter فرم پدر رو Public کنی تا تو فرم فرزند بهش دسترسی داشته باشی و بعد از انجام عملیات روی فرم فرزند متد Fill رو دوباره صدا بزنی تا DataGrid فرم پدر دوباره پر بشه (یا Refresh(.
کلاً گرفتی؟

behzad1986
چهارشنبه 01 شهریور 1391, 15:41 عصر
سلام
دوستمون درست میگن این سوال اصلاً به وراثت ربطی نداره
می تونید واسه فرم فرزندتون یه Event بنویسید که بعد از هر تغییر تو دیتا بیس صدا زده بشه و در فرم چدر اطلاعات تو دیتا گرید رو رفرش کنید

kkkaka
چهارشنبه 01 شهریور 1391, 16:33 عصر
پس بحث وراثت فقط مختص به کلاس ها و اشیا میشه؟!
tooraj_azizi_1035 (http://barnamenevis.org/member.php?41757-tooraj_azizi_1035)
جان کلآ که بله گرفتم مرسی از لطفت فقط یه مثالم بزنی بهتر متوجه میشم.


behzad1986 (http://barnamenevis.org/member.php?119020-behzad1986)
عزیز از شما هم ممنونم ولی من نمیدونم چجوری باید یه Event تعریف کنم؟!

behzad1986
چهارشنبه 01 شهریور 1391, 17:22 عصر
باید یه delegate تعریف کنی یا از delegate اسفاده کنی
برای مثال درون فرم فرزندت این event رو تعریف کن

public delegate void DatabaseChange();//delegate
public event DatabaseChange DatabaseChanged;//event

طرقه صدا زدن: هر جا درج ، آپ دیت، یا حذف انجام دادی تو فرم فرزند به این صورت صداش می زنی

if (DatabaseChanged != null)
DatabaseChanged();

بعد هنگام ساخت کلاس فرزند در فرم پدر به رخداد DatabaseChanged تابع وصل می کنی که توش دیتا گریدتو آپ دیت کنه

private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.DatabaseChanged+=new Form2.DatabaseChange(f_DatabaseChanged);
f.ShowDialog();
}

void f_DatabaseChanged()
{
//refresh DataGridView
}

kkkaka
چهارشنبه 01 شهریور 1391, 18:46 عصر
بهزاد عزیز مرسی از لطفت خیلی کارمو راه انداختی واقعآ ممنون.
ولی...
من این کد هارو کپی و پیست کردم ، هیچ چیز به درد بخوری ازش دستگیرم نشد!
اگه امکانش فراهمه یه توضیح جامع در مورد کد ها و کار کردش برای من و به احتمال زیاد دوستان دیگه ای که در آینده نیاز پیدا خواهند کرد بدین.
بازهم ممنون

Mahmoud Zaad
چهارشنبه 01 شهریور 1391, 18:58 عصر
سلام
شما می تونید یک متد Public که وظیفه اش پر کردن دیتاگریدویوتون هست توی فرم پدر (در مثال ما فرم یک) داشته باشید بعد در فرم دوم که فرم فرزند باشه بعد از کدهای درج رکورد کدی مثل کد زیر بنویسید:



(Application.OpenForms["Form1"] as Form1).FillGrid();

متد FillGrid، همون متد Publicی هست که در فرم یک تعریف کردیم.