Хорошо, это действительно странно. Я показал проблему другому разработчику, и он тоже в замешательстве. Мы используем 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
Есть идеи? Заранее спасибо.