PDA

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



rayson
پنج شنبه 08 خرداد 1393, 17:22 عصر
با سلام دوستان.
خسته نباشید.
من یک فرم دارم که اطلاعت فروش را ثبت میکنه و اطلاعات خریدار را از فرم دیگر که با ShowDialog فراخوانی شده به فرم فروش اضافه میکنم.
تنها مشکل من اینجا است که زمانی که خریدار انتخاب شد ، بتونم فرم لود صفحه قبل یکبار دیگه فراخوانی کنم .
شکل زیر : کلیک انتخاب خریدار که زده شد ، فرم انتخاب خریدار بسته و اطلاعات در کادر خریدار نمایش داده بشه .( تمام اطلاعات اوکی فقط نمیدونم به چه صورت اون داخل کادر خریدار انتقال بدم)
ممنون میشم راهنمایی کنید .
با تشکر

kavayo
پنج شنبه 08 خرداد 1393, 18:04 عصر
به این تایپیک مراجعه کنید :
http://barnamenevis.org/showthread.php?452961-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%85%D9%88%D8%AC%D9%88%D8%AF-%D8%AF%D8%B1-%D8%AA%DA%A9%D8%B3-%D8%A8%D8%A7%DA%A9%D8%B3-%D9%87%D8%A7-%D8%A7%D8%B2-%DB%8C%DA%A9-%D9%81%D8%B1%D9%85-%D8%A8%D9%87-%D9%81%D8%B1%D9%85-%D8%AF%DB%8C%DA%AF%D8%B1

rayson
پنج شنبه 08 خرداد 1393, 18:32 عصر
به این تایپیک مراجعه کنید :
http://barnamenevis.org/showthread.php?452961-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%85%D9%88%D8%AC%D9%88%D8%AF-%D8%AF%D8%B1-%D8%AA%DA%A9%D8%B3-%D8%A8%D8%A7%DA%A9%D8%B3-%D9%87%D8%A7-%D8%A7%D8%B2-%DB%8C%DA%A9-%D9%81%D8%B1%D9%85-%D8%A8%D9%87-%D9%81%D8%B1%D9%85-%D8%AF%DB%8C%DA%AF%D8%B1
سلام دوست عزیز .
مشکل من به این صورت که فرم ما قبل(فروش) دیگه عمل لود فرم انجام نمیده من یک تکست باکس هم به صورت عمومی کردم و هم متغییر سراسری ایجاد کردم ولی با این وضعیت که فرم ماقبل(فروش) من که عمل لود انجام نمیده مقداری درون تکست باکس اون هم قرار نمیگیره.
با کد زیر عمل انتقال انجام میدم :
Foroosh f = new Foroosh();
f.txt_name_kharidar.Text = dgv_kharidar.Rows[row].Cells["Name"].Value.ToString().Trim();
Close();
در لینکی که قرار دادید عمل ارسال از فرم اول به دوم بود ولی من برعکس این میخوام انجام بدم !

khokhan
پنج شنبه 08 خرداد 1393, 19:53 عصر
سلام دوست عزیز .
مشکل من به این صورت که فرم ما قبل(فروش) دیگه عمل لود فرم انجام نمیده من یک تکست باکس هم به صورت عمومی کردم و هم متغییر سراسری ایجاد کردم ولی با این وضعیت که فرم ماقبل(فروش) من که عمل لود انجام نمیده مقداری درون تکست باکس اون هم قرار نمیگیره.
با کد زیر عمل انتقال انجام میدم :
Foroosh f = new Foroosh();
f.txt_name_kharidar.Text = dgv_kharidar.Rows[row].Cells["Name"].Value.ToString().Trim();
Close();
در لینکی که قرار دادید عمل ارسال از فرم اول به دوم بود ولی من برعکس این میخوام انجام بدم !
رویداد formclosing فرم دوم رو درفرم اول شبیه سازی کنین و دستوری که حاوی رفرش لود فرم اول هست رو در این رویداد قرار بدین
با این عمل هر زمان فرم دوم بسته می شه اون رویداد فعل شده و فرم 1 رفرش می شه به عبارتی می شه این :

در فرم 1 :


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
frm2.FormClosing += new FormClosingEventHandler(frm2_FormClosing);
}

void frm2_FormClosing(object sender, FormClosingEventArgs e)
{
if ((sender as Form2).textData != null)
textBox1.Text = (sender as Form2).textData;
}
}



ودر فرم 2 :



public partial class Form2 : Form
{
public string textData;
public Form2()
{
InitializeComponent();
}

private void btnOK_Click(object sender, EventArgs e)
{
textData = textBox1.Text + " " + textBox2.Text;
this.Close();
}

private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
}

با این روش هم رویداد ها رو می تونی به راحتی فراخوانی کنی وهم می تونی عمل انتقال اطلاعات بین فرمها رو با کمترین هزینه انجام بدی .........:لبخند:heeeee

rayson
پنج شنبه 08 خرداد 1393, 21:03 عصر
textBox1.Text = (sender as Form2).textData;
سلام با تشکر از کمکتون .
فقط : آیا به جای متغیر textData میشود از متغییر های موجود در یک کلاس استفاده کرد ؟
من بعد از عمل سندر کلاس خودم خواستم صدا بزنم که نمیشناختش .
ممنون .

rayson
پنج شنبه 08 خرداد 1393, 21:48 عصر
مشکل دیگه ای که هست با این روش نمیتونم حالات تکست باکس ها و دکمه ها در فرم اول را پس از بسته شدن فرم 2 تغییر بدم مثلا:
LinkLabel.visible=false;
هم به هیچ شکلی نمیتونم به اجرا بزارم پس از گرفتن اطلاعات.


ویرایش:
مشکلی دیگر هم وجود دارد اگر از دستور ShowDialog استفاده کنم دیگه داده ای از فرم 2 به فرم 1 انتقال پیدا نمیکه منظورم کد زیر است:

private void button1_Click(object sender, EventArgs e) {
Form2 frm2 = new Form2();
frm2.Show();
frm2.FormClosing += new FormClosingEventHandler(frm2_FormClosing);
}

khokhan
پنج شنبه 08 خرداد 1393, 22:13 عصر
مشکل دیگه ای که هست با این روش نمیتونم حالات تکست باکس ها و دکمه ها در فرم اول را پس از بسته شدن فرم 2 تغییر بدم مثلا:
LinkLabel.visible=false;
هم به هیچ شکلی نمیتونم به اجرا بزارم پس از گرفتن اطلاعات.
تمام کارهایی رو که بعد از بسته شدن فرم 2 در فرم اول بایستی انجام بشه رو ، در اون رویداد frm2_FormClosing که در فرم اول ایجاد کردی قرار بده


void frm2_FormClosing(object sender, FormClosingEventArgs e)
{
this.LinkLabel.visible=false;
}

rayson
پنج شنبه 08 خرداد 1393, 22:18 عصر
تمام کارهایی رو که بعد از بسته شدن فرم 2 در فرم اول بایستی انجام بشه رو ، در اون رویداد frm2_FormClosing که در فرم اول ایجاد کردی قرار بده


void frm2_FormClosing(object sender, FormClosingEventArgs e)
{
this.LinkLabel.visible=false;
}
متاسفانه اصلا پاسخی به کد Enable کردن تکست باکس ها نمیده :
void ak_formclosing(object sender, FormClosingEventArgs e)
{
txt_tellMobile_kharidar.Enabled = true;
txt_family_kharidar.Enabled = true;
txt_name_kharidar.Enabled = true;
txt_name_kharidar.Text = (sender as Add_kharidar).NameKharidar.ToString().Trim();
txt_family_kharidar.Text = (sender as Add_kharidar).FamilyKharidar.ToString().Trim();
txt_tellMobile_kharidar.Text = (sender as Add_kharidar).TellKharidar.ToString().Trim();

}

khokhan
پنج شنبه 08 خرداد 1393, 22:59 عصر
متاسفانه اصلا پاسخی به کد Enable کردن تکست باکس ها نمیده :
void ak_formclosing(object sender, FormClosingEventArgs e)
{
txt_tellMobile_kharidar.Enabled = true;
txt_family_kharidar.Enabled = true;
txt_name_kharidar.Enabled = true;
txt_name_kharidar.Text = (sender as Add_kharidar).NameKharidar.ToString().Trim();
txt_family_kharidar.Text = (sender as Add_kharidar).FamilyKharidar.ToString().Trim();
txt_tellMobile_kharidar.Text = (sender as Add_kharidar).TellKharidar.ToString().Trim();

}
:لبخند:heee
مطمئنی همه چیز رو درست نوشتی :متفکر:

rayson
پنج شنبه 08 خرداد 1393, 23:32 عصر
مرسی بابت نمونه کد مشکل حل شد.
به دلیل فشار زیاد خستگی من به جای اینکه Visible برابر True قرار بدم مثل Nooba میومدم Enable برابر True قرار میداذم.
با تشکر.