Slow showing / drawing dialogue with ListBox?

后端 未结 3 1427
执念已碎
执念已碎 2021-01-27 16:09

My application uses entity framework to pull in a small tiny set of results... It takes about 3 seconds for it to do it? Why might this be?

Start.cs

相关标签:
3条回答
  • 2021-01-27 16:36

    Changing my IEnumerable to IList made a difference:

    public static class PreLoadedResources
    {
        public static IEnumerable<ProjectType> projectTypes;
    }
    

    to

    public static class PreLoadedResources
    {
        public static IList<ProjectType> projectTypes;
    }
    

    then in my loading (which takes a 2 second hit), I just .ToList it instead... but now the showdialogue procedure takes split seconds.

    0 讨论(0)
  • 2021-01-27 16:45

    The ListBox has to redraw every time you add an item. You can either use Dmitry's method of using AddRange(), or you can wrap your loop with BeginUpdate()/EndUpdate() calls.

    ListBoxProjectType.BeginUpdate();
    
    foreach( var projectType in projectTypes )
    {
        ListBoxProjectType.Items.Add(projectType.Title);
    }
    
    ListBoxProjectType.EndUpdate();
    
    0 讨论(0)
  • 2021-01-27 16:50

    Try to replace adding individual items to listbox with AddRange:

    public void ListBoxProjectTypes()
    {
        IEnumerable<ProjectType> projectTypes = projectTypeRepository.ProjectTypes;
        ListBoxProjectType.Items.AddRange(projectTypes.Select(item => (object)item.Title).ToArray());
    }
    

    Or simply wrap items adding with ListBoxProjectType.BeginUpdate and ListBoxProjectType.EndUpdate.

    0 讨论(0)
提交回复
热议问题