Winform rendering pretty slow


Author
Message
Edhy Rijo
E
StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)
Group: StrataFrame Users
Posts: 2.4K, Visits: 23K
Hi Trent,

Thanks again for the support.

I tried your code in the CRM and as you said, it worked as expected.BigGrin

Now I put the code in the Maintenance Form as suggested in my project and what I am seeing is that the form will not render until it is moved by me using the mouse.

Please take a look at this small video sample that illustrate what I am experiencing: http://www.progytech.com/videos/SF_Sample2/SF_Sample2.html

Just to clarify:

  • The MDI MainForm is using the DevExpress Ribbon control (not the Ribbon form class).
  • The Maintenance Form is using SF controls including the modified ListView (SynchListView) posted by Greg McGuffey in this link http://forum.strataframe.net/FindPost14966.aspx


Edhy Rijo

Trent Taylor
Trent Taylor
StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
This is turning into somewhat of a lesson on windows, rendering, and handles....all things that are related to WinForms development versus StrataFrame itself.  We too ran into rendering issues in some of our applications...and we had to stop, figure out where the issues were, and work through them.  One of the primary issues that we ran into were MDI forms and the MDIClient class.

We wrote our own MDI environment for our medical application so that rendering would be faster.  However, one thing that is generally a bad idea is to just set the IsMDIContainer property to true...many issues come from doing this.

You are always better of creating an MDIClient class and then adding it to your form, which will in affect turn that form into an MDI.  I have attached a sample of how to do this.  You can then take this to the next level by adding form loading logic, etc, when it is added to the MDI.  You can render the back of the MDI client (in this sample I just set the background to white).  But there are a lot of things that you can do.

This at least gives you more control than just setting the IsMDIContainer proeprty to True and then you can start to create your application environment.

Attachments
MDIClientSample.zip (151 views, 79.00 KB)
Edhy Rijo
E
StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)
Group: StrataFrame Users
Posts: 2.4K, Visits: 23K
Thanks Trent,

Will check your sample and implement in my current project.  Once again, your help is must appreciated.Tongue

Edhy Rijo

Edhy Rijo
E
StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)StrataFrame VIP (4.6K reputation)
Group: StrataFrame Users
Posts: 2.4K, Visits: 23K
Trent L. Taylor (04/15/2008)
This at least gives you more control than just setting the IsMDIContainer proeprty to True and then you can start to create your application environment.

Trent,

You certainly nailed the problem with this sample solution.  In no time I was able to replace the old code in my Main Form and now the rendering problem is virtually gone.

I took the liberty of adding some functionality to the LaunchForm method that will do the following:

  1. Before creating a new form object, check through the _MDI form's collection for an existing instance.
  2. If found then activate that instance and bring it to the front.

Here is the changed code:

''' <summary>

''' Common method for automatically launching a form and making it an MDI child.

''' If the form exist in the _MDI collection then show it to the user instead.

''' This functionality could be controlled by passing a 2nd parameter

''' </summary>

''' <param name="FormType"></param>

''' <remarks></remarks>

Private Sub LaunchForm(ByVal FormType As System.Type)

     '-- Establish Locals

     Dim loForm As Form

     '-- Create the form

     loForm = CType(Activator.CreateInstance(FormType), Form)

     For Each currentForm As Form In Me._MDI.Controls

          If currentForm.Name = loForm.Name Then

               '-- If the form is minimized then restore it.

               If currentForm.WindowState = FormWindowState.Minimized Then

                    currentForm.WindowState = FormWindowState.Normal

               End If

               '-- Show the form on top of the others.

               currentForm.BringToFront()

               Exit Sub

          End If

     Next

     '-- Set the MDI parent

     loForm.MdiParent = Me

     '-- Show the form

     loForm.Show()

End Sub



Edhy Rijo

Trent Taylor
Trent Taylor
StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
Glad it helped you with your problem.  Smile
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search