簡體   English   中英

刷新數據時列表框項目“不可見”(winform)

[英]Listbox items “invisibles” when refreshing data (winform)

我的列表框有問題:如果我更改了數據中的任何內容(例如添加一項或刪除一項),則這些項目將變得不可見,但實際上仍在“此處”(我可以看到它,因為當我的鼠標懸停它)。

我的列表框的目的是在用戶選擇帶有組合框的文件夾時顯示場景列表(如文件)。

這是我的代碼:

public partial class FormScenario : Form
{
    BindingList<Folder> blFolders = new BindingList<Folder>();
    BindingList<Scene> blScenes = new BindingList<Scene>();

    public FormScenario(FormMainPanel fParent)
    {
        InitializeComponent();
        FParent = fParent;
    }

    public void Refresh_blScenes()
    {
        lb_scenes.DataSource = null;
        lb_scenes.Items.Clear();
        lb_scenes.DataSource = this.blScenes;
        lb_scenes.DisplayMember = "SceneName";

        //attempt to fix the bug ... not working
        lb_scenes.DrawMode = DrawMode.Normal;
        lb_scenes.DrawMode = DrawMode.OwnerDrawFixed;
    }

    public void Populate_Scene_Datas()
    {
        blScenes.Clear();
        Folder fol = (Folder)cb_listfolders.SelectedItem;
        if (fol != null){
            foreach (Scene sce in fol.ListScenes){
                this.blScenes.Add(sce);
            }
        }
    }
}

如果有用,這里是我的對象:

class Folder
{
    public Int32 IdFolder { get; set; }
    public String FolderName { get; set; }
    public String FolderInfo { get; set; }

    // contains the list to show in the listbox 
    public List<Scene> ListScenes = new List<Scene>();
}

class Scene
{
    public Int32 IdScene { get; set; }
    public String SceneName { get; set; }
    public byte[] SceneDesc { get; set; }
    public byte[] SceneInfo { get; set; }
}

我按以下順序使用這些功能:

Populate_Scene_Datas();
Refresh_blScenes();

如果有人對這個問題給我一個提示或答案,那將非常有幫助!

謝謝 !

我找到了解決方案...但是我無法解釋為什么它起作用。 如果有人遇到相同的問題,我將發布此信息。

我已經改變了:

lb_scenes.DataSource = this.blScenes;

創建人:

lb_scenes.Items.AddRange(blScenes.ToArray());

暫無
暫無

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

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