MDI Parent-Child Multiple Events Firing


Feb 8, 2017
Reaction score
I am using Visual Studio 2010 Professional.

I've created an MDI interface.

In the parent ("MainForm") I have the following code:

Event CallFontChange()

And then the subroutine raising the event...
Private Sub ChangeFontToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ChangeFontToolStripMenuItem.Click
RaiseEvent CallFontChange()
Catch ex As Exception
End Try
End Sub

In the child ("GCNDashboard") form, I have the following code:
Public Sub New()
' This call is required by the designer.
AddHandler MainForm.CallFontChange, AddressOf ChangeFont
' Add any initialization after the InitializeComponent() call.
End Sub

And then the subroutine referencing the event handler...
Public Sub ChangeFont()
Dim FontSet As New System.Windows.Forms.FontDialog
FontSet.Font = DataGrid1.DefaultCellStyle.Font
Me.DataGrid1.DefaultCellStyle.Font = New Font(FontSet.Font.Name.ToString, FontSet.Font.SizeInPoints, FontSet.Font.Style)
Catch ex As Exception
End Try
End Sub

I put this in the form_closing event...
Private Sub GCNDashBoard_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
RemoveHandler MainForm.CallFontChange, AddressOf ChangeFont
End Sub

My issue is, when I click the ChangeFontToolMenuItem, the font dialog shows up once. I select the new font, size and style; then click "OK". Another font dialog shows up and again, I select the new font, size and style. In the DataGridView (named "DataGrid1"), I don't see the font change the first time but do see it change the second time. Obviously I only want the font dialog to appear once and make the changes the first time... You can see from my "butchered code" that I have tried several approaches and have finally reached the end of my ability to fix it. Can anyone help me with this?

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question