PDA

View Full Version : سوال: ثبت اطلاعات در فرم 1 و نمایش اطلاعات در فرم 2 که باز است



aliramazani
چهارشنبه 05 تیر 1392, 18:18 عصر
من در فرم 1 اطلاعاتی را در دیتابیس ذخره میکنم. در فرم 2 دیتاگرید ویو وجو داره که این اطلاعات را نمایش میده.

قانونا وقتی فرم 2 را ببندم و باز کنم اطلاعاتی که در فرم 1 وارد شده نمایش داده خواهد شد. چطور میشه بدون بستن و باز کردن همینطور که بازه بعد از ثبت اطلاعات در فرم 1 گریدویو فرم 2 رفرش بشه و اطلاعات را نشون بده؟

farazjalili
چهارشنبه 05 تیر 1392, 18:27 عصر
سلام پیشنهاد :
داخل فرم 2 به ازای هر object یک public property بسازین به عنوان مثال :
public string NoContract
{
set
{
txt_NoContract.Text
= value;
}
}

و با کد زیر می تونید مقدار دهی کنید :
foreach (Form frm in Application.OpenForms)
{
if (frm is frm_Guarantee)
{
frm_Guarantee f1 = (frm_Guarantee)frm;
f1.NoContract = txt_date.Text = grv_InfoCompany[0, grv_InfoCompany.CurrentRow.Index].Value.ToString();
}
}
frm_Guarantee باید اسم فرم 2 تون باشه

aliramazani
چهارشنبه 05 تیر 1392, 19:57 عصر
داخل فرم 2 به ازای هر object یک public property بسازین
این یعنی چی؟

farazjalili
چهارشنبه 05 تیر 1392, 22:32 عصر
object های داخل فرم ها به صورت private هستند و نمی شود از بیرون کلاس به انها درسترسی داشت یک راه حل برای دسترسی از خارج از فرم استفاده از propert هست که ساختار آن را در بالا گذاشتم
public string NoContract
{
set
{
txt_NoContract.Text
= value;
}
}

مهدی هادیان2
پنج شنبه 06 تیر 1392, 04:15 صبح
بسم الله الرحمن الرحیم
با سلام
به نظر بنده از خیر این داستان بگذرید و اجازه بدید هر کدوم از فرم ها با اشیای خودشون سر و کار داشته باشند.
موفق باشید.

aliramazani
پنج شنبه 06 تیر 1392, 18:48 عصر
object های داخل فرم ها به صورت private هستند و نمی شود از بیرون کلاس به انها درسترسی داشت یک راه حل برای دسترسی از خارج از فرم استفاده از propert هست که ساختار آن را در بالا گذاشتم
public string NoContract
{
set
{
txt_NoContract.Text
= value;
}
}

ببخشید ولی خیلی کلی گفتین من اطلا نمیدونم این کدها را کجا باید بزارم. اگه میشه با یک مثال بگین.

wolf_majid
پنج شنبه 06 تیر 1392, 19:20 عصر
میتونید با رخداد با خبر بشید
مثال :
کدهای فرم 2 :
public delegate void DataChanged_Del();

public event DataChanged_Del DataChanged;

private void button1_Click(object sender, EventArgs e)
{
if (DataChanged != null)
DataChanged();
}
کدهای فرم 1 :
private int a = 0;
private void DataChanged()
{
//تغییرات مربوط به روز رسانی اعمال شود
//مثال
textBox1.Text = (++a).ToString();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.DataChanged += DataChanged;
frm.ShowDialog();
}

amirreza_.net
پنج شنبه 06 تیر 1392, 19:40 عصر
خب همون کدی که وقتی فرم لود میشه باعث میشه دیتا گرید فیلد ها رو بیاره رو بعد از رویداد ثبت بنویس!!!
یعنی همون کدی که باعث لود شدن اطلاعات از دیتا بیس و نمایش جدول تو دیتا گرید میشه رو بعد همون کدی که باعث ثبت میشه بنویس!

wolf_majid
پنج شنبه 06 تیر 1392, 20:11 عصر
همچنین میتونید از Application.OpenForms[FomName].Controls استفاده کنید

khokhan
پنج شنبه 06 تیر 1392, 22:16 عصر
ببخشید ولی خیلی کلی گفتین من اطلا نمیدونم این کدها را کجا باید بزارم. اگه میشه با یک مثال بگین.

البته دوستان لطف کردند و نظرات خوبی دادند اما یه راه جالب دیگه هم هست که با دو خط بتونین این کار رو انجام بدین و در ضمن به خاطر سادگی در کدها برای همه مفهوم باشه :لبخند:
مثل این نمونه