PDA

View Full Version : سوال در مورد ارسال یک list به فرم بعدی - انتقال اطلاعات بین دو فرم



f.beigirad
یک شنبه 13 اسفند 1391, 14:49 عصر
با عرض سلام و درود

برنامه ای دارم مینویسم که آزمون میگیره.آزمون های چهار گزینه ای.

من تمامی گزینه های انتخاب شده ی کاربر رو میریزم توی یک list.

قراره توی فرم بعدیم از این لیست استفاده کنم.

میخوام بدونم چطوری باید این لیست رو به فرم بعدی ارسال کنم.؟؟؟؟؟

با تشکر از همه دوستان

pedram.11
یک شنبه 13 اسفند 1391, 14:54 عصر
سلام خسته نباشی
میتونی به صورت زیر یک پارامتر تعریف کنی و اونو به فرم دوم ارسال کنی
توی فرم دوم:
List<string> items;
public Form2(List<string> items)
{
this.items = items;
InitializeComponent();
}

و توی فرم اول:
List<string> items = new List<string>();
Form2 frm2 = new Form2(items);
frm2.Show();

f.beigirad
یک شنبه 13 اسفند 1391, 15:09 عصر
با تشکر از جوابتون .

اما لیستمو به این صورت تعریف کردم و دو مقدار میگیره:

ببینید:

struct Log
{
public int QID1;
public int Answer1;

public Log(int a, int b)
{
this.QID1 = a;
this.Answer1 = b;
}
}

List<Log> LogList = new List<Log>();


پس نمیتونم از دستور شما استفاده کنم.

pedram.11
یک شنبه 13 اسفند 1391, 15:11 عصر
شما این هایی که نوشتید رو توی یه کلاس بریزید و کلاس رو ارسال کنید

mhsmity
یک شنبه 13 اسفند 1391, 15:19 عصر
لسیت خودتون رو از نوع استاتیک تعریف کنید.

f.beigirad
یک شنبه 13 اسفند 1391, 15:30 عصر
شما این هایی که نوشتید رو توی یه کلاس بریزید و کلاس رو ارسال کنید

همین توی ذهنم بود اما بلد نیستم چطوری اون لیست رو که توی کلاسه پر کنم و چطوری از اون اطلاعاتو بخونم.
میشه توضیح بدین؟


لسیت خودتون رو از نوع استاتیک تعریف کنید.
نمیتونم عزیز.باید INT باشه.



با تشکر

pedram.11
یک شنبه 13 اسفند 1391, 15:49 عصر
همین توی ذهنم بود اما بلد نیستم چطوری اون لیست رو که توی کلاسه پر کنم و چطوری از اون اطلاعاتو بخونم.
میشه توضیح بدین؟
با تشکر
اول یک کلاس تعریف کنید؛ Class1.cs:
public class Class1
{
public List<Log> LogList = new List<Log>();
}
public struct Log
{
public int QID1;
public int Answer1;
public Log(int a, int b)
{
this.QID1 = a;
this.Answer1 = b;
}
}

توی فرم2:
Class1 cls;
public Form2(Class1 cls)
{
this.cls = cls;
InitializeComponent();
}
و توی فرم1:
private void button1_Click(object sender, EventArgs e)
{
// definitions of your class
Class1 cls1 = new Class1();
Log l = new Log(1,2);
cls1.LogList.Add(l);
//
Form2 frm2 = new Form2(cls1);
frm2.Show();
}

f.beigirad
سه شنبه 15 اسفند 1391, 13:58 عصر
با درود.

تو تاپیک 7 کد سوم خط 5 شما از Log استفاده کردید.

من اگر STRUCT ه Log رو تعریف نکنم که شناخته نمیشه.

وقتیم که struct رو دوباره تعریف میکنم توی فرم اولم این ارور رو میده .

Argument 1: cannot convert from 'Program.Test.Log' to 'Program.Class1.Log'

Mahmoud.Afrad
سه شنبه 15 اسفند 1391, 14:14 عصر
به جای استراکت ، Log رو به کلاس تبدیل کنید
یک کلاس به نام Log به پروژه اضافه کنید(فایل با پسوندcs) و کد کلاس رو به صورت زیر دربیارید:

public class Log
{
public int QID1;
public int Answer1;

public Log(int a, int b)
{
this.QID1 = a;
this.Answer1 = b;
}
}


در فرم اول یک لیست از این کلاس تعریف میکنید:
List<Log> LogList = new List<Log>();
برای اضافه کردن هم کافیه اشیائی از نوع Log ایجاد کنید و Add کنید:
مثلا:
LogList.Add(new Log(1, 1));
LogList.Add(new Log(2, 2));
// ...
در فرم دوم که قراره لیست دریافت بشه به اینصورت عمل کنید:

private List<Log> _logs;

public Form2(List<Log> logs)
{
InitializeComponent();

_logs = logs;
}

هنگام ایجاد و نمایش فرم2 دوم کافیه لیستی که در فرم اول ساختید رو به سازنده فرم دوم بدید:

Form2 frm = new Form2(LogList);
frm.Show();


در فرم2 میتونید از _log استفاده کنید.

pedram.11
سه شنبه 15 اسفند 1391, 14:20 عصر
شما struct log رو توی یک کلاس دیگه(Test) هم تعریف کردید و دارید اونو به یک struct در کلاس دیگه انتصاب میدید، درسته اسم یکی هست اما کلاس ها متفاوت هستند، شما اگه به این struct در جای دیگه نیاز دارید بهتره از همین بصورت اشتراکی استفاده کنید

f.beigirad
سه شنبه 15 اسفند 1391, 14:29 عصر
ممنون از پاسختون.

ولی میشه بگین من چطوری اطلاعاتمو توی لیستم اد کنم؟؟

و اینکه این لیست در فرم 1 که مقدار دهی هم میشه ذخیره میشه؟یا نه؟/


بخدا چند روزه اونقدر گشتم که دیگه حوصله تجزیه تحلیل رو ندارم.

pedram.11
سه شنبه 15 اسفند 1391, 14:39 عصر
foreach (string item in cls.LogList)
listbox1.Items.Add(item);

f.beigirad
سه شنبه 15 اسفند 1391, 14:47 عصر
public class Log

{

public int QID1;

public int Answer1;



public Log(int a, int b)

{

this.QID1 = a;

this.Answer1 = b;

}

}


ببخشید این کد توی کلاسه یا تو بدنه ی فرمم؟؟؟؟؟؟