I re-read the documentation for BindingNavigator and found out what I was doing wrong.
I should've overridden the AddStandardItems method and insert the button there.
So this is the re-done code and it works 100%.
vb.net Code:
  1. Public Class BindingNavigatorEx
  2.     Inherits System.Windows.Forms.BindingNavigator
  3.  
  4.     Private WithEvents _CloseForm As ToolStripItem = Nothing
  5.     Public Property CloseFormItem() As ToolStripItem
  6.         Get
  7.             Return _CloseForm
  8.         End Get
  9.         Set(ByVal value As ToolStripItem)
  10.             _CloseForm = value
  11.         End Set
  12.     End Property
  13.  
  14.     Public Sub New()
  15.         MyBase.New()
  16.     End Sub
  17.  
  18.     Public Overrides Sub AddStandardItems()
  19.         Me._CloseForm = New ToolStripButton("Close")
  20.         Me._CloseForm.Name = "ToolStripButtonCloseForm"
  21.         Me.Items.Add(Me._CloseForm)
  22.         'Add a separator
  23.         Dim separator As New ToolStripSeparator()
  24.         Me.Items.Add(separator)
  25.         MyBase.AddStandardItems()
  26.     End Sub
  27.  
  28.     Private Sub _CloseForm_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles _CloseForm.Click
  29.         If Me.DesignMode = False Then
  30.             'Find the outer most parent container control and trycast it to a form
  31.             'and call the close method on that form
  32.             Dim parent As Form = Nothing
  33.             Dim child As Control = Me
  34.             Dim ctrl As Control = Me.Parent
  35.             Do Until ctrl Is Nothing
  36.                 child = ctrl
  37.                 ctrl = ctrl.Parent
  38.             Loop
  39.             parent = TryCast(child, Form)
  40.             If parent IsNot Nothing Then
  41.                 parent.Close()
  42.             End If
  43.         End If
  44.     End Sub
  45. End Class
So, as usually, there are many ways to skin a cat