第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

選擇然后刪除選定的列表項

選擇然后刪除選定的列表項

C#
繁星點點滴滴 2021-11-14 14:57:37
我有一些行,我希望用戶能夠通過 ctrl+a 選擇多個行,然后可以通過按鍵盤上的 Delete 鍵刪除所選項目。我的代碼不起作用??梢酝ㄟ^ ctrl+A 選擇列表項,但按刪除按鈕后,只會刪除一項。private void lvTasks_KeyDown(object sender, KeyEventArgs e){     if (e.KeyCode == Keys.A && e.Control)    {        lvTasks.MultiSelect = true;        foreach (ListViewItem item in lvTasks.Items)        {            item.Selected = true;        }    }    if (e.KeyCode == Keys.Delete)     foreach (ListViewItem eachItem in lvTasks.SelectedItems)    {         DeleteTask();    }}public void DeleteTask(){    if (lvTasks.SelectedItems.Count > 0)    {            lvTasks.Items.Remove(lvTasks.SelectedItems[0]);            Statics.SaveTasks(lvTasks.Items.Cast<ListViewItem>().Select(l => (Task)l.Tag).ToArray());            UpdateTaskProgress(new Task());            txtDownloadLink.Text = "";            txtRarPassword.Text = "";            txtReferenceLink.Text = "";            chkBackupResource.Checked = Properties.Settings.Default.BackupSource;            chkClearExtracted.Checked = Properties.Settings.Default.CleanExtract;            chkRemoveRar.Checked = Properties.Settings.Default.RemoveRar;            chkUseIDM.Checked = Properties.Settings.Default.UseIDM;            chkRemoveDownload.Checked = Properties.Settings.Default.RemoveDownload;            gbTaskProgress.SuspendLayout();            settings = Statics.LoadSettings();            gbTaskProgress.Controls.Clear();            int max = Enum.GetValues(typeof(TaskProgresses)).Cast<int>().LastOrDefault();            for (int i = 0; i <= max; i++)                gbTaskProgress.Controls.Add(new TaskProgress(i + 1) { Left = 10, Top = (20 + 24 * i), Caption = ((TaskProgresses)i).ToString().CapitalSplit(), Task = new Task() });            gbTaskProgress.ResumeLayout();            lvTasks.Items.Clear();
查看完整描述

2 回答

?
猛跑小豬

TA貢獻1858條經(jīng)驗 獲得超8個贊

private void lvTasks_KeyDown(object sender, KeyEventArgs e)

{

    if (e.KeyCode == Keys.A && e.Control)

    {

     lvTasks.MultiSelect = true;

     foreach (ListViewItem item in lvTasks.Items)

     {

       item.Selected = true;

     }

    }

    if (e.KeyCode == Keys.Delete) 

    for (int i = lvTasks.SelectedItems.Count - 1; i >= 0; i--)

    {

     ListViewItem itm = lvTasks.SelectedItems[i];

     lvTasks.Items[itm.Index].Remove();

    }

}

編輯


你的線路 lvTasks.Items.Remove(lvTasks.SelectedItems[0]);


這是問題所在。您只是刪除索引 0 處的項目。您需要對它們進行循環(huán)。


編輯 2僅當您要刪除所有項目時才有效。如果您真的只想刪除選定的項目。更改 for 循環(huán)并刪除 List :


for (int i = lvTasks.SelectedItems.Count - 1; i >= 0; i--)

{

 ListViewItem itm = lvTasks.SelectedItems[i];

 lvTasks.Items[itm.Index].Remove();

}

那應該有效。


查看完整回答
反對 回復 2021-11-14
?
楊__羊羊

TA貢獻1943條經(jīng)驗 獲得超7個贊

我會使用一個while循環(huán):


if (e.KeyCode == Keys.Delete) 

{

   while (lvTasks.SelectedItems.Count > 0)

   {

      lvTasks.SelectedItems[0].Remove();

   }

}


查看完整回答
反對 回復 2021-11-14
  • 2 回答
  • 0 關(guān)注
  • 197 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號