PDA

View Full Version : چند مشکل در ارتباط 2تا فرم



Reza,M
چهارشنبه 26 تیر 1392, 13:19 عصر
باسلام
1)من دو فرم دارم که در هر دو فرم لیست باکس با مقدیر پُرشده وجود داره حالا میخوام با کلیک روی مقادیر هرکدوم از این لسیت باکس ها معادلش در لیست باکس فرم دیگه سلکت بشه (SelectedIndex)
2)دوتا فرم باز شده دارم حالا میخوام بدون اینکه نمونه جدیدی از فرم1 ایجاد کنم دستورات رویداد لود فرم1 از تو فروم2 اجرا بشه
:اشتباه:

M_Tavakoli_70
چهارشنبه 26 تیر 1392, 14:36 عصر
میشه بیشتر توضیح بدی، 2 تا فرمت همزمان بازند؟

Reza,M
چهارشنبه 26 تیر 1392, 14:55 عصر
میشه بیشتر توضیح بدی، 2 تا فرمت همزمان بازند؟
آره هر 2تا فرم همزمان باز هستن

hamid_0341
چهارشنبه 26 تیر 1392, 17:22 عصر
میتونی یک لیست پابلیک بسازی و اطلاعات لیست باکستو توش بریزی وقتی سلکت شد مقدارو بریزی توی اون لیستت بعد اون لیستتو به فرم بعدیتم وصل کنی
فک کنم اینجوری جواب بده

Reza,M
چهارشنبه 26 تیر 1392, 17:45 عصر
میتونی یک لیست پابلیک بسازی و اطلاعات لیست باکستو توش بریزی وقتی سلکت شد مقدارو بریزی توی اون لیستت بعد اون لیستتو به فرم بعدیتم وصل کنی
فک کنم اینجوری جواب بده
نه نشد!
اگه میشه نمونه بزار

hamid_0341
چهارشنبه 26 تیر 1392, 17:53 عصر
بفرما ببین من دوتا فرمم بازه ولی وقتی که توی فرم 2 چیزی اضافه میکنم توی فرم 1 اضافه میشه

http://uploadboy.com/4h7zy2yhiz6c.html

Reza,M
چهارشنبه 26 تیر 1392, 18:00 عصر
بفرما ببین من دوتا فرمم بازه ولی وقتی که توی فرم 2 چیزی اضافه میکنم توی فرم 1 اضافه میشه

http://uploadboy.com/4h7zy2yhiz6c.html

مرسی دوست عزیز ولی مشکل من این نبود!!
سوال من اینه:

حالا میخوام با کلیک روی مقادیر هرکدوم از این لسیت باکس ها معادلش در لیست باکس فرم دیگه سلکت بشه (SelectedIndex)
حالا میخوام بدون اینکه نمونه جدیدی از فرم1 ایجاد کنم دستورات رویداد لود فرم1 از تو فروم2 اجرا بشه

Reza,M
چهارشنبه 26 تیر 1392, 21:20 عصر
دوستان نظری ندادرم!:عصبانی++:

Reza,M
پنج شنبه 27 تیر 1392, 01:36 صبح
از اساتید کسی تو این زمینه کار نکرده؟
من واقعا به حل اینها واسه برنامه ام نیاز دارم

mousa1992
پنج شنبه 27 تیر 1392, 03:01 صبح
روش انجام کارو برات توضیح میدم کد نویسی با خودت. دوتا فرم داریم 1 و 2 ؛میخوایم با انتخاب یک ایتم از فرم یک معادل همون ایتم تو فرم 2 انتخاب بشه ، برای این کار اولین قدم اینه که باید از فرم 1 دسترسی داشته باشیم به فرم 2 و در ضمن به نمونه قرار گرفته در حافظه دسترسی داشته باشیم خب برای این کار میتونی از قطعه کد زیر استفاده کنی


(Form2)Application.OpenForms["Form2"]

خب قطعه کد بالا چیکار میکنه ؟ میاد نمونه ی ایجاد شده از فرم 2 رو برمیگردونه که از نوع Form هست مقدار بازگشتی که ما برای دسترسی به اجزا فرم 2 نیازه که اونو cast کنیم به فرم 2
خب حالا شما کافیه ی دونه . بذاری بعدش و لیست باکستون و یا هر کنترل و شی دیگه ای که با سطح دسترسی public تعریف شدن رو تغییر بدین ؛ این ی راه بود
راه دوم هم شبیه همین و اینکه شما نمونه ساخته شده از فرم 2 رو پیدا میکنین با این تفاوت که این بار یک خاصیت برای فرم 2 تعریف کردین با سطح دسترسی public که بعد از بدست اوردن نمونه ساخته شده از فرم 2 مقدار خاصیت تعریف شده رو ست میکنین و اونجا توی دستور set بهش میگین که مقدار فرستاده شده رو توی لیست باکس پیدا کنه

موفق باشی

Reza,M
پنج شنبه 27 تیر 1392, 12:51 عصر
روش انجام کارو برات توضیح میدم کد نویسی با خودت. دوتا فرم داریم 1 و 2 ؛میخوایم با انتخاب یک ایتم از فرم یک معادل همون ایتم تو فرم 2 انتخاب بشه ، برای این کار اولین قدم اینه که باید از فرم 1 دسترسی داشته باشیم به فرم 2 و در ضمن به نمونه قرار گرفته در حافظه دسترسی داشته باشیم خب برای این کار میتونی از قطعه کد زیر استفاده کنی


(Form2)Application.OpenForms["Form2"]

خب قطعه کد بالا چیکار میکنه ؟ میاد نمونه ی ایجاد شده از فرم 2 رو برمیگردونه که از نوع Form هست مقدار بازگشتی که ما برای دسترسی به اجزا فرم 2 نیازه که اونو cast کنیم به فرم 2
خب حالا شما کافیه ی دونه . بذاری بعدش و لیست باکستون و یا هر کنترل و شی دیگه ای که با سطح دسترسی public تعریف شدن رو تغییر بدین ؛ این ی راه بود
راه دوم هم شبیه همین و اینکه شما نمونه ساخته شده از فرم 2 رو پیدا میکنین با این تفاوت که این بار یک خاصیت برای فرم 2 تعریف کردین با سطح دسترسی public که بعد از بدست اوردن نمونه ساخته شده از فرم 2 مقدار خاصیت تعریف شده رو ست میکنین و اونجا توی دستور set بهش میگین که مقدار فرستاده شده رو توی لیست باکس پیدا کنه

موفق باشی
مشکلم حل نشد میشه واسه (SelectedIndex) لیست باکس ها یه نمونه بزاری!:متفکر:

khokhan
پنج شنبه 27 تیر 1392, 19:07 عصر
مشکلم حل نشد میشه واسه (SelectedIndex) لیست باکس ها یه نمونه بزاری!:متفکر:
ارتباط .............:لبخند:




private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.listBox1.Items.AddRange(this.listBox1.Items);
f2.Show();

}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Form2 f2 = (Form2)Application.OpenForms["Form2"];
f2.listBox1.SelectedItem= this.listBox1.SelectedItem.ToString();
f2.Show();
}

Reza,M
پنج شنبه 27 تیر 1392, 23:34 عصر
دوست عزیز مشکل من اینجاست که اولا مقادیر دوتا فرم باهم متفاوت هستند دوما اگر بر روی آیتم های لیست باکس فرم1 کلیک کنم [بدون اینکه فرم2 باز باشه] با خطا مواجه میشم همچنین میخوام این خاصیت در هر دولیست باکس باشه

Mohammadm
جمعه 28 تیر 1392, 00:16 صبح
دوست عزیز مشکل من اینجاست که اولا مقادیر دوتا فرم باهم متفاوت هستند دوما اگر بر روی آیتم های لیست باکس فرم1 کلیک کنم [بدون اینکه فرم2 باز باشه] با خطا مواجه میشم همچنین میخوام این خاصیت در هر دولیست باکس باشه

روش khokhan تا حدی درسته ولی برای جلوگیری از خطا وقتی که فرم2 باز نیست میتونید رویداد listBox1_SelectedIndexChanged در فرم 1 رو به صورت زیر تغییر بدید
همچنین اگر تعداد آیتمها در دو لیست باکس فرق داشته باشد جهت جلوگیری از خطا مبنی بر عدم وجود اندیس در محدوده مجاز میتوانید کد را به صورت زیر تغییر دهید
البته من بجای استفاده از خاصیت listBox1.SelectedItem از خاصیت SelectedIndex استفاده کردم
به کد زیر توجه کنید

if (Application.OpenForms["Form2"] != null)if (Application.OpenForms["Form2"] != null)
{
Form2 f2 = (Form2)Application.OpenForms["Form2"];
int index = this.listBox1.SelectedIndex;
if (f2.listBox1.Items.Count >= index+1)
{
f2.listBox1.SelectedIndex = this.listBox1.SelectedIndex;
f2.Show();
}
}

و همین کدها رو در فرم 2 جهت کنترل لیست باکس فرم 1 بنویسید(کافیه بجای Form2 بنویسید Form1) تا وقتی که بر روی آیتمهای لیست باکس از فرم2 کلیک میکنید اندیس لیست باکس از فرم1 نیز تغییر نماید
برای آزمایش بهتر رویداد button1_Click در فرم 1 رو به صورت زیر تغییر دهید
Form2 f2 = new Form2();
f2.Show();


و در فرم 2 آیتمهای لیست باکس رو به صورت دستی وارد کنید(نیازی نیست تا تعداد آیتمها در هردو لیست باکس از نظر مقدار و تعداد برابر باشند)

Reza,M
جمعه 28 تیر 1392, 00:39 صبح
:تشویق:
Mohammadm (http://barnamenevis.org/member.php?39568-Mohammadm) بسیار ممنون