Re: [問題] 問一個listbox的新手問題

看板C_Sharp作者 (喲)時間14年前 (2010/06/15 12:18), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串3/5 (看更多)
※ 引述《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
感謝幫忙^^ 我採用了A大的方法 直接從BS取來源
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
文章代碼(AID): #1C5lx__4 (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1C5lx__4 (C_Sharp)