Открытие WebBrowser в новой форме в конфигурации MDI.По какой-то причине он открывается дважды - PullRequest
0 голосов
/ 11 мая 2011

Хорошо, это действительно странно. Я показал проблему другому разработчику, и он тоже в замешательстве. Мы используем VB.NET с VS 2008.

Вот мои настройки:

  • У меня есть DataGridView элемент управления, с полным выбором строки
  • При щелчке правой кнопкой мыши по строке открывается контекстное меню
  • Существует элемент меню для просмотра дополнительной информации о сайте интрасети в окне браузера, которое открывается как дочерняя форма MDI в моем приложении.
  • Окно браузера представляет собой базовую форму с элементом управления WebBrowser, прикрепленным для заполнения всей формы
  • Окно браузера принимает строковый параметр URL, который отправляется в элемент управления WebBrowser для перехода на новую страницу

Проблема:

Почему-то, когда я выбираю пункт меню, который открывает новое окно браузера, он открывает два из них.

Когда я устанавливаю точку останова на событие Menuitem MouseUp (я также пробовал событие Click с теми же результатами), оно проходит весь процесс, как и ожидалось, и когда оно достигает End Sub, оно возвращается и повторяет весь метод MouseUp во второй раз! Я не могу за свою жизнь понять, почему это происходит.

Событие MouseUp элемента меню:

Private Sub TestMenuItemIEClient_MouseUp(ByVal sender As Object, ByVal e As System.EventArgs) Handles TestMenuItemIEClient.MouseUp
    Dim clientID As String = TestGrid.SelectedRows(0).Cells("ClientID").Value
    Dim browser As Browser = New Browser("http://blah/client_view.aspx?clientid=" & clientID)
    browser.MdiParent = Main
    browser.Show()
End Sub ' <-- after this point, it goes back and repeats this whole event which creates a 2nd browser window

Форма браузера:

Public Class Browser
    Public url As String

    Public Sub New(ByVal url As String)
        MyBase.New()
        InitializeComponent()
    End Sub

    Private Sub Browser_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        WebBrowser1.Navigate(New Uri(url))
    End Sub
End Class

Есть идеи? Заранее спасибо.

...