簡體   English   中英

刪除組時,ListView的頂部顯示空白

[英]Empty space appears at the top of ListView when removing Groups

我的音樂播放器在“詳細信息”模式下使用ListView顯示曲目,並使用ListViewGroup將專輯曲目分組在一起。

我創建了一個事件,當單擊專輯的ListViewGroup時,它會刪除一個專輯中的所有曲目。 如果刪除軌道時ListView沒有向下滾動,則效果很好。 如果向下滾動ListView,將刪除相冊,但在ListView的頂部和標題與第一組之間,將出現較大的不可單擊的空白區域。

第一張圖片,ListView中有3個相冊(向上滾動)

在此處輸入圖片說明


第二張圖片,上一張相冊已刪除,一切都很好!

在此處輸入圖片說明


好的,然后在刪除一組項目時向下滾動ListView

第三張圖片,ListView中的3個相冊(向下滾動)

在此處輸入圖片說明


第四個圖像,刪除了最后一個相冊,頂部出現空白區域,最后一個曲目跟蹤ListView是否未顯示!

在此處輸入圖片說明


我認為這與我的代碼無關,而是ListView中的錯誤? 有人注意到相同的行為嗎? 有什么技巧可以防止這種情況發生?


編輯:添加了刪除項的代碼(根據用戶要求)

List<ListViewItem> delItems = new List<ListViewItem>(); // creating list of items to be removed

foreach (ListViewGroup group in listView1.Groups)
{
    if (Convert.ToInt32(group.Tag) == groupNumber) // all groups have individual number in tag field
    {
        foreach (ListViewItem item in group.Items)
        {
            delItems.Add(item);
        }
    }
}

foreach (ListViewItem item in delItems)
{
    item.Remove();
}

EDIT2:添加了代碼以檢查是否單擊了組

由於沒有真正的方法來處理群組點擊,因此我做了丑陋的處理。 但這有效。 首先,我在ListView中使用了MouseDown事件。 然后,我檢查是否有用戶點擊的項目。 如果用戶單擊組,則該項目為null,並且for循環會增加i並檢查是否可以立即找到該項目。 最終找到項目后,我們知道該項目屬於我們單擊的組。 因此,我們獲得了項目組標簽,在其中記錄了它是什么組。

private void listView1_MouseDown(object sender, MouseEventArgs e)
{
    ListViewItem item;

    for (int i = 0; i < 25; i++) // group height is not more that 25 pixels.
    {
        item = listView1.GetItemAt(e.X, e.Y + i);

        if (item != null)
        {
            if (i > 1) // bigger than 1, because there is 1 pixel gap between listviewitems when using groups
            {
                if (e.Button == MouseButtons.Middle) removePlaylistGroup(Convert.ToInt32(item.Group.Tag));
            }
            else
            {
                if (e.Button == MouseButtons.Middle) removePlaylistItem(item.Index);
            }
            break;
        }
    }
}

這是所有發生的原因,因為從ListView刪除項目顯然會引發Form1_Layout事件。 在其中,如果表單布局發生更改,我將使用listView1.BeginUpdate() ...調整listView1的大小。 不知何故弄亂了我的listView。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM