Re: [問題] 問一個listbox的新手問題
※ 引述《kevin8685 (最愛maki~!)》之銘言:
: 以下是我修改過後的
: 刪除按鈕
: 目前有個問題
: 執行後 可以成功進行第一次刪除
: 但是第二次就會卡住..
: 重開程式後 還是一樣
: 第一次成功 第二次卡住
: private void button1_Click(object sender, EventArgs e)
: {
<cut />
: while (!item.EndOfStream)
: {
: string[] item2 = item.ReadLine().Split(' ');
: dr = dt.NewRow();
: dr["Key"] = item2[0];
: dr["Value"] = item2[1] + " " + item2[2];
: dt.Rows.Add(dr["Value"], dr["Key"]);
: }
為什麼卡住,這問題除了在你那邊各種因素都確認清楚,否則難以判斷.
此外,
你的物件binding是這樣:
listBox1.DataSource --> (BindingSource)bs --> (DataTable)dt
無法修改listBox1的項目,那就去改bs的項目. 無法修改bs的項目,就修改dt的項目.
這樣就可以了.
你為了記錄listBox1的項目,弄一個檔案跟它同步,實在沒必要.
我的作法是: 從listBox1中抓到選取的項目,這些項目在資料來源都可以識別為
同樣的物件,所以只要取得選取項目的參考,然後到資料來源中一項項刪除即可.
private void button1_Click(object sender, EventArgs e)
{
if (listBox1.SelectedItems.Count > 0)
{
List<DataRow> lrows = new List<DataRow>();
foreach (DataRowView o in listBox1.SelectedItems)
{
lrows.Add(o.Row);
}
foreach (DataRow rr in lrows)
{
dt.Rows.Remove(rr);
}
BindingSource bs = new BindingSource();
bs.DataSource = dt;
listBox1.DataSource = bs;
listBox1.DisplayMember = "Value";
listBox1.ValueMember = "Key";
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.152.25
※ 編輯: yauhh 來自: 220.130.152.25 (06/15 12:18)
推
06/16 00:38, , 1F
06/16 00:38, 1F
→
06/16 20:02, , 2F
06/16 20:02, 2F
→
06/16 20:02, , 3F
06/16 20:02, 3F
推
06/17 15:34, , 4F
06/17 15:34, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 5 篇):