2017-11-20 2 views
0

내 목록 상자에 문제가 있습니다. 항목을 추가하거나 삭제하는 것과 같이 데이터에서 아무 것도 변경하면 항목이 보이지 않게되지만 실제로는 여기에 있습니다. (내 마우스가 마우스를 가리키면 일종의 툴팁을 만들었 기 때문에 그것을 볼 수 있습니다.)목록 상자 항목 데이터를 새로 고칠 때 "보이지 않음"(winform)

내 목록 상자의 목적은 사용자가 콤보 상자가있는 폴더를 선택할 때 장면 (파일과 같은) 목록을 표시하는 것입니다.

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(); 

경우

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); 
      } 
     } 
    } 
} 

유용 경우, 내 개체가 : 여기

내 코드입니다 누군가 나에게이 문제에 대한 힌트 나 대답을 주면 매우 도움이 될 것입니다!

고마워요!

+0

하면 디스플레이 회원과 선택된 값의 속성을 설정하기 위해 노력했다

나는이를 변경해야합니다. –

+0

데이터를 추가하거나 삭제할 때 ** Populate_Scene_Datas() ** 함수를 사용해야한다고 생각합니다. –

+0

@VickyS Displaymember를 설정했으나 (내 게시물에서 볼 수는 있지만) selectedvalue가 아닙니다 ... 시도해 볼 것입니다! – Sanno

답변

0

해결책을 찾았습니다 ...하지만 왜 작동하는지 설명 할 수 없습니다. 동일한 문제가 발생하는 경우이를 게시하고 있습니다.

lb_scenes.DataSource = this.blScenes; 

에 의해 :

lb_scenes.Items.AddRange(blScenes.ToArray()); 
관련 문제