Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
Okay, I want to add multiple user controls into a flow panel at one time without the UI freezing, I've tried adding the controls from a Background Worker but get an error about how it cannot be added because it can't change parent control or something like that, any help would be appreciated.
Posted 19-Dec-12 12:33pm

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

You are going to have to create a delegate to add the controls for you, something like this:
 
** assuming your flow control is called 'flow'
   private delegate sub delAddControl(ctrl as Control)
   private sub AddControl(ctrl as Control)
       if (flow.InvokeRequired) then
           dim d as new delAddControl(AddressOf AddControl)
           me.Invoke(d, ctrl)
       else 
           flow.Controls.Add(ctrl)
       end if
   end sub
 
I have written this code 100 times in C# but my vb is a little rusty so im sure this wont compile but you should be able to see what im doing and get yours working from that.
 

**** EDIT *****
Oh Yea, then you can just call AddControl from your BackgroundWorker and the controls will get added to your UI without locking it up because the heavy lifting is being done in the BackgroundWorker.
  Permalink  
v2
Comments
jackdawkc at 20-Dec-12 6:29am
   
Thank you very much, worked just as I wanted it to :)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 539
1 Maciej Los 300
2 DamithSL 233
3 Sergey Alexandrovich Kryukov 209
4 BillWoodruff 200
0 OriginalGriff 7,168
1 Sergey Alexandrovich Kryukov 6,377
2 DamithSL 5,461
3 Manas Bhardwaj 4,876
4 Maciej Los 4,450


Advertise | Privacy | Mobile
Web04 | 2.8.1411023.1 | Last Updated 19 Dec 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100