PDA

View Full Version : سوال: کپی اطلاعات Listbox به Textbox



Access
سه شنبه 15 مرداد 1387, 17:15 عصر
:افسرده:چطوری ممکنه اطلاعات یه Listbox رو به چندتا Textbox کپی کرد ؟

MostafaAhmadi
سه شنبه 15 مرداد 1387, 18:00 عصر
textBox1.Text = "";
for (int i = 0; i < listBox1.Items.Count; ++i)
{
textBox1.Text += listBox1.Items[i].ToString();
}

Access
سه شنبه 15 مرداد 1387, 20:04 عصر
من این کد رو نوشتم تو برنامه خودم ولی داخل Textbox می نویسه
system.Data.DataRowView

رضا جاسبی
سه شنبه 15 مرداد 1387, 21:34 عصر
textBox1.Text = "";
for (int i = 0; i < listBox1.Items.Count; ++i)
{
textBox1.Text += listBox1.Items[i].ToString();
}


فکر می کنم این جواب میده. اما احتمالا منظور مورد نظر شما نخواهد بود. این کد تمام Item ها را پشت سر هم در یک TextBox قطار می کنه. شما برای مشاهده دقیق با Debug اجرا کن و مقدار textBox1.Text رو ببین. ولی بهتره که تعداد Itemها رو بدونی و در TextBox های جدا بریزی.
این رو هم امتحان کن که بجای i++ ، ++i رو استفاده کنی.

Salar Ashgi
سه شنبه 15 مرداد 1387, 22:27 عصر
دوست عزیز شما بهتره اول خاصیت MultiLine تکست باکس رو فعال کنید ‍!!!

بعد این کد رو به برنامه تون اضافه کنید :



private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1; i <= 5; i++)
{
listBox1.Items.Add((char)(i + 64));
}
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
textBox1.Text = textBox1.Text + listBox1.Items[i].ToString() + " ";
}
}


_________________________________________________

موفق و پیروز باشید !!!

Access
چهارشنبه 16 مرداد 1387, 00:08 صبح
باز هم system.Data.DataRowView دلیلش هم اینکه من Listbox رو دستی پر نمی کنیم بلکه از خاصیت DataSource و ValueMember استفاده می کنم

tthenry14plus
چهارشنبه 16 مرداد 1387, 03:27 صبح
مسلما کدهای بالا برای کار شما جواب نمیده چون شما دارید لیست باکس رو با آبجکت پر میکنید و پس از اون مستقیما آبجکت ها رو به String تبدیل کرده و به TextBox اضافه میکنید، خوب نباید هم TextBoxبا چیزی جز system.Data.DataRowView پر بشه.

شما باید آبجکتی از نوع DataRowView بسازید، در هر گام یک آیتم از لیست باکس رو به اون نسبت بدید و سپس مقدار مورد نظرتون رو که در ردیف اولDataRowView واقع شده رو بخونید و داخل textBox یا هر آبجکت دیگه ای بریزید.



foreach (object obj in listBox1.Items)
{
DataRowView dataRowView = (DataRowView)obj;
//اضافه کردن به textBox
textBox1.Text += dataRowView[0] + " ";
//اضافه کردن به RichTextBox
richTextBox1.Text += dataRowView[0] + "\n";
}

corona
چهارشنبه 16 مرداد 1387, 09:32 صبح
برای مسئله شما هیچ نیازی به datarowview وجود نداره ، هیچ فرقی نمیکنه شما لیست باکس رو دستی پر کنی یا با یک دیتا سورس خودش پر بشه . من از خاصیت selected index changed لیست باکس استفاده کردم و خاصیت text لیست باکس رو توی خاصیت text تکست باکس ریختم و هیچ مشکلی هم وجود نداشت .شما لیست باکست رو با هر دیتا سورسی که خاصی پرکن و بعد از عناصرش به هر صورتی که خواستی استفاده کن کاری که من کردم به این صورته که چند تا تکست باکس رو فرو انداختم و یک لیست باکس و روی هر عنصر لیست باکس که کلیک میکنی توی یکی از تکیت باکس ها نشون داده میشه .

private void LstMain_SelectedIndexChanged(object sender, EventArgs e)
{
if (textBox1.Text == string.Empty)
textBox1.Text = LstMain.Text;
else if (textBox2.Text == string.Empty)
textBox2.Text = LstMain.Text;
else if (textBox3.Text == string.Empty)
textBox3.Text = LstMain.Text;
else if (textBox4.Text == string.Empty)
textBox4.Text = LstMain.Text;
else if (textBox5.Text == string.Empty)
textBox5.Text = LstMain.Text;
else
{
foreach (Control c in this.Controls)
if (c is TextBox)
c.Text = "";
}

}

tthenry14plus
چهارشنبه 16 مرداد 1387, 16:02 عصر
جناب Corona ی عزیز text مقدار انتخاب شده لیست باکس رو برمیگردونه، شما اول موضوع و محتوای تاپیک رو بخونید بعد اگر کد مشکلی داشت بهش ایراد بگیرید.
جناب Access قصد انتقال تک تک مقادیرListBox بایند شده به textbox رو داشتند شما اگر تونستید اینکارو با کد زیر انجام بدید من خودکشی میکنم:


textBox1.Text = "";
for (int i = 0; i < listBox1.Items.Count; ++i)
{
textBox1.Text += listBox1.Items[i].ToString();
}

Access
چهارشنبه 16 مرداد 1387, 16:12 عصر
دوست عزیز tthenry14plus دستت درد نکنه با کمک شما کارم را افتاد و من تونستم پروژه ام رو تموم کنم:تشویق:
از لطفتون ممنون .......

tthenry14plus
چهارشنبه 16 مرداد 1387, 16:41 عصر
خواهش میکنم . موفق باشید ...