PDA

View Full Version : كار با Listbox



amirreyhaneh
دوشنبه 13 دی 1389, 07:38 صبح
با سلام
خواهش ميكنم تواين مورد كمكم كنيد يا يك Link برام بذاريد
من داده يك جدول رو با يك dataset توي Listbox نمايش مي دهم:(list box داراي valuemember وdisplaymember است)حالا مي خواهم وقتي روي يك آيتم List box كليك كردم ودكمهadd رو زدم اين item (به همراه value آن) به Listbox ديگر منتقل شود.

unknown.unforgiven
دوشنبه 13 دی 1389, 10:31 صبح
سلام
منظورت اینه که وقتی رو add کلیک کرد به کل از یه listbox پاک بشه و بره تو یه listbox دیگه؟

amirreyhaneh
دوشنبه 13 دی 1389, 11:05 صبح
سلام
آره
مي خوام آيتم انتخاب شده(هم textوهم value)به List box ديگر منتقل شود
ممنون

ایمان مدائنی
دوشنبه 13 دی 1389, 11:11 صبح
دوست عزيز يك نمونه درست كن بزار اينجا تا ما برات كامل كنيم

unknown.unforgiven
دوشنبه 13 دی 1389, 11:36 صبح
اینی که گذاشتم رو چک کن ببین به کارت میاد یا نه

hadi-z
دوشنبه 13 دی 1389, 11:37 صبح
سلام
شاید این کمکتون کنه:


privatevoid button4_Click(object sender, EventArgs e)
{
for (int j = 0; j < listBox5.Items.Count; j++)
{
listBox6.Items.Add(listBox5.GetItemText(listBox5.I tems[j]).ToString());
}
}

یکی از اعضای همین سایت قبلا با این مشکل مواجه شده بود که با این کد کشملشو حل کرد.

amirreyhaneh
دوشنبه 13 دی 1389, 12:50 عصر
من با استفاده از دستورات زیر listbox1 را پر کردم
DataSet CityList = new DataSet();
ObjUserBS.FillCity(CityList);
.
.
.

listBox1.DataSource = CityList.Tables[0];
listBox1.ValueMember = "id";
listBox1.DisplayMember = "CityName";

حال برای انتقال item انتخاب شده به List box2 دستورات زیر رانوشتم:

listBox2.Items.Add(listBox1.SelectedItem);
listBox1.ValueMember = "id";
listBox2.DisplayMember = "CityName";

ولی وقتی یک item را از listbox2 انتخاب میکنم متن را درست نمایش می دهد ولی وقتی میخواهم value آن را نمایش دهم پیغام زیر را میدهد:
Object reference not set to an instance of an object.

hadi-z
دوشنبه 13 دی 1389, 13:17 عصر
شما کدی که من گذاشتم رو امتحان کردی؟

amirreyhaneh
دوشنبه 13 دی 1389, 13:48 عصر
سلام
آره
كدي هم كه شما گذاشتيد نوشتم.ولي وقتي آيتم ها به listbox6 منتقل شد،حالا اگر يك آيتم رو از Listbox6 انتخاب كنم وبگم text آن را نمايش بده درست نمايش ميده ولي وقتي ميگم value آيتم انتخاب شده را نمايشبده باز پيغام زير را ميدهد:
Object reference not set to an instance of an object.
مرسي

amirreyhaneh
دوشنبه 13 دی 1389, 14:53 عصر
سلام
با دستورات زير مشكلم حل شد
public class ListBoxItem
{
private string text;
private string name;


public string Name
{
get { return name; }
set { name = value; }
}

public string Text
{
get { return text; }
set { text = value; }
}

public ListBoxItem(string atext, string aname)
{
this.text = atext;
this.name = aname;

}

public override string ToString()
{
return this.text;
}

}
از تمامي دوستان تشكر مي كنم

ACorvinus
دوشنبه 13 دی 1389, 15:15 عصر
سلام.
من نمیدونم شما چرا دارین کار رو برای خودتون مشکلتر می کنین ولی با همین 3 تا خط هم میشه جواب گرفت:


ListBox1.ValueMember = ListBox2.ValueMember = "ID";
ListBox1.DisplayMember = ListBox2.DispleyMember = "CityName";

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

حالا همین یه خط کد رو وقتی مثلا میخواین با زدن یه Button، آیتم انتخاب شده در لیست 1 به لیست 2 انتقال پیدا کنه، بنویسین:


ListBox2.Items.Add(ListBox1.SelectedItem);

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

amirreyhaneh
سه شنبه 14 دی 1389, 08:29 صبح
سلام
ممنون دوست عزيز
من كدهاي شما رو نوشتم و عمل انتقال انجام شد.واي براي اينكه value آيتم انتخاب شده از listbox2 را نمايش بدم دستور زير را نوشتم:
;(((MessageBox.Show(LISTBOX2.SelectedValue.ToStrin g
ولي خطاي زير را مي دهد:
Object reference not set to an instance of an object

ACorvinus
سه شنبه 14 دی 1389, 14:40 عصر
سلام
ممنون دوست عزيز
من كدهاي شما رو نوشتم و عمل انتقال انجام شد.واي براي اينكه value آيتم انتخاب شده از listbox2 را نمايش بدم دستور زير را نوشتم:
;(((MessageBox.Show(LISTBOX2.SelectedValue.ToStrin g
ولي خطاي زير را مي دهد:
Object reference not set to an instance of an object

سلام. وقت بخیر.

شما درست میگفتین. مراحل زیر رو انجام بدین تا درست بشه.
بعد از اینکه منبع اطلاعات رو به DataSource مربوط به ListBox1 انتساب میدین، اینو بنویسین:


ListBox2.DataSource = DTable.Clone();

در کد فوق DTable همان منبع اطلاعات شماست. حالا وقتی میخواین یک آیتم از ListBox1 به ListBox2 اضافه کنین، اونو اینجوری اضافه کنین:


DataRow dr = ((DataTable)listBox2.DataSource).NewRow();

dr["ID"] = ((DataTable)listBox1.DataSource).Rows[listBox1.SelectedIndex]["ID"];
dr["Name"] = ((DataTable)listBox1.DataSource).Rows[listBox1.SelectedIndex]["Name"];
((DataTable)listBox2.DataSource).Rows.Add(dr);

دیگه مشکلی پیش نمیاد. موفق باشین.

amirreyhaneh
چهارشنبه 15 دی 1389, 08:12 صبح
سلام
خسته نباشيد
آره-اينجوري مشكلم حل شد.
ممنون ازراهنمايي وحوصله شما
شاد و موفق باشيد