Re: Multiple MDI Child Icons and Control Boxes Why??

From: Siv (msnewsgroups_at_removeme.sivill.com)
Date: 01/15/05


Date: Sat, 15 Jan 2005 14:53:10 -0000

Nak,

I only do the me.close and f1.activate calls. the forms don't do anything
else as far as I can remember. I'll have a hunt through the forms own
events and see if I can see anything being done and report back.

Whilst waiting for a reply to my plea for help, I tried changing the Start
Form so that it doesn't have a control box, min or max buttons.

In this instance when it opens it does initially have a control box though
its close button is disabled. When I click one of its buttons to call up
another form and then close that and come back, the Start form now doesn't
display a control box or a sytem menu and icon and in fact my problem with
the new form goes away, I can call it up and exit it and I don't get the
multiple Icons and control boxes appearing on oipening the same form or any
of the others.

It feels to me like there is a corruption in the problem form or the start
form in relation to its system menu.

One thing that might be relevant, I had put a bit of code in the resize
event of the start form that stops the user resizing it:

Private Sub frmStart_Resize(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Resize
    Me.WindowState = FormWindowState.Maximized
End Sub

Basically I was trying to stop the user from restoring or minimising the
start form and thus thinking they had no way to navigate around the app
(there are menus on the main MDI parent that will allow them to select all
the pages but some users just panic if there are no buttons on screen).
Could it be that as the MDI parent switches between the selected form and
the start form a resize occurs and this triggers some sort of cascade in the
frmStart_Resize event?? that interferes with the display of the child form's
icon and control boxes??

Siv,
Martley, Near Worcester. UK

"Nak" <a@a.com> wrote in message
news:OthcH3w%23EHA.2700@TK2MSFTNGP14.phx.gbl...
> Hi Siv,
>
> I've tried replicating your issue by making an MDI parent and 2
> children. In the MDI parent I have added a menu with 2 options, this is
> the code that I have put in the form,
>
> Private Function showForm(ByVal iName As String) As Boolean
> Dim frm As Form
> For Each frm In Me.MdiChildren
> If (frm.Name = iName) Then
> frm.BringToFront()
> Return (True)
> End If
> Next
> End Function
>
> Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MenuItem2.Click
> If (Not (showForm("Form2"))) Then
> Dim pFrmForm1 As New Form2()
> pFrmForm1.Name = "Form2"
> pFrmForm1.MdiParent = Me
> Call pFrmForm1.Show()
> End If
> End Sub
>
> Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MenuItem3.Click
> If (Not (showForm("Form3"))) Then
> Dim pFrmForm1 As New Form3()
> pFrmForm1.Name = "Form3"
> pFrmForm1.MdiParent = Me
> Call pFrmForm1.Show()
> End If
> End Sub
>
> When either menu item is clicked the form is either created (if
> showform returns false) or brought to the front. No problems have occured
> which make me think that you might have some code elsewhere causing the
> issue, are you putting anything into the Closing events of the children?
> I know I experienced a bug once with relation to the MDI child list in the
> menu but I think this one can be resolved. If you can post your code that
> replicates this then please do, I'll take a look at it, other than that I
> think you need to check your code.
>
> Nick.
>
> "Siv" <msnewsgroups@removeme.sivill.com> wrote in message
> news:eViyhow%23EHA.1084@tk2msftngp13.phx.gbl...
> Hi,
> I have an MDI application that uses a generic "ShowPage" routine in a
> module that is called when I want to display a child form. The basic idea
> is that in the module I have declared each form as follows:
>
> Friend F0 As frmMain
> Friend F1 As frmStart
> Friend F2 As frmSearch
> Then in my ShowPage routine (which is passed a string "pageToShow" which
> is the name of the form I wish to open), I first check to see if we
> already have an instance of the form open:
> For Each frm As Form In F0.MdiChildren
> If frm.Name = pageToShow Then
> frm.BringToFront()
> Exit Function
> End If
> Next
> If the form isn't already open the code carries on past the above and
> opens a new instance of the form:
>
> Select Case pageToShow
>
> Case "frmStart"
> F1 = New frmStart
> F1.MdiParent = F0
> F1.Show()
> Case "frmSearch"
> F2 = New frmSearch
> F2.MdiParent = F0
> F2.Show()
> F2.Activate()
> F2.WindowState = FormWindowState.Maximized
> Etc ..
> I usually have a button at the bottom of each form that allows the user to
> close it and return to the start page (this is an MDI child form that is
> never closed whilst the app is running as it has a series of button that
> access all the other forms on it.
> In the click event of the individual forms I have the following:
> Me.Close()
> F1.Activate()
> (F1 being the Start form).
> Now the problem. Up to now I have had no problem with this method of
> opening and closing forms. Today I added a new form to the set and
> configured it like all the others. The problem is that when I close this
> particular form and then re-open another form, its icon stays in the menu
> bar along with the form just being opened and at the right hand end of the
> menu bar I am getting multiple sets of min,max/restore,close buttons. The
> more time I return to the Start Menu and open forms the more of these
> additional control boxes appear almost filling the bar. Clicking these
> controls has no effect, or clicking the control menus at the left hand end
> underneath the form icons doesn't do anything. It's as if these icons and
> controls are now lost from their form.
> Does anyone know why this one form could have caused this behaviour?, I
> have checked the form and compared all its non-default properties with the
> ones that don't cause this behaviour and they all have the same settings.
> One thing I have also noticed is that when I return to the Start form, the
> icon is usually the icon from the last form opened not the start form's
> own icon.
> Siv
> Martley, Near Worcester, UK.
>