0

用户可以通过双击行或选择行并单击按钮从 DataGrid 中进行选择。

使用第一种方法初始化新页面,但不会触发加载的事件。

使用第二种方法初始化新页面,旧页面触发 unloaded 事件,新页面触发加载事件并打开新选项卡。

由于单击和双击事件都触发了同一个子事件,我无法弄清楚为什么一个有效而另一个无效 - 当不在调试中时,使用第一种方法形成新选项卡,然后在单击时触发加载的事件,但这不会在调试中显示。

Private Sub Reports_BalanceSheets_EditRecord(sender As Object, e As RoutedEventArgs)
    Try
        NewRecord = False
        Dim DGV As CustomControl.DGVx = Reports_BalanceSheets_Grid.FindName("Reports_BalanceSheets_DGV")
        If DGV.SelectedItems.Count = 1 Then
            Dim row As System.Data.DataRowView = DGV.SelectedItems(0)
            FormID = row("ID")
            Dim vName As String = row("Name")
            Dim vTab As CustomControl.STC_Tabx = Application.Current.MainWindow.FindName("Reports_BalanceSheetTab")
            Dim TabControl As CustomControl.STCx = Application.Current.MainWindow.FindName("AccountingReports_TabControl")
            Dim vImageSource As String = ReturnImageAsString("Profit_Loss.png", 16)
            If vTab Is Nothing Then
                Dim ReportsBalanceSheetFrame As New Frame

                Dim Tab As New CustomControl.STC_Tabx
                With Tab
                    .Name = "Reports_BalanceSheetTab"
                    .Header = " Edit " & vName & " "
                    .CloseButtonVisibility = DevComponents.WpfEditors.eTabCloseButtonVisibility.Visible
                    .TabToolTip = "Edit " & vName
                    .ImageSource = vImageSource
                    .Content = ReportsBalanceSheetFrame
                End With
                AddHandler Tab.Closing, AddressOf TabControl_TabClosing
                Dim vGrid As Grid = Application.Current.MainWindow.FindName("MainGrid_Website")
                RegisterControl(vGrid, Tab, Tab.Name.ToString)
                TabControl.Items.Add(Tab)


                Dim BalanceSheet As New Reports_BalanceSheet_Page
                ReportsBalanceSheetFrame.NavigationService.Navigate(BalanceSheet)
                TabControl.SelectedItem = Tab

            Else
                vTab.Close()
                Dim ReportsBalanceSheetFrame As New Frame
                Dim Tab As New CustomControl.STC_Tabx
                With Tab
                    .Name = "Reports_BalanceSheetTab"
                    .Header = " Edit " & vName & " "
                    .CloseButtonVisibility = DevComponents.WpfEditors.eTabCloseButtonVisibility.Visible
                    .TabToolTip = "Edit " & vName
                    .ImageSource = vImageSource
                    .Content = ReportsBalanceSheetFrame
                End With
                AddHandler Tab.Closing, AddressOf TabControl_TabClosing
                Dim vGrid As Grid = Application.Current.MainWindow.FindName("MainGrid_Website")
                RegisterControl(vGrid, Tab, Tab.Name.ToString)
                TabControl.Items.Add(Tab)

                Dim BalanceSheet As New Reports_BalanceSheet_Page
                ReportsBalanceSheetFrame.NavigationService.Navigate(BalanceSheet)
                TabControl.SelectedItem = Tab

            End If
        ElseIf DGV.SelectedItems.Count > 1 Then
            AppBoxValidation("You can only select one item at a time to edit!")
        Else
            AppBoxValidation("You must select an item to edit!")
        End If

    Catch ex As Exception
        EmailError(ex)
    End Try
End Sub
4

1 回答 1

1

Adding e.Handled resolved the issue

于 2013-08-05T13:42:40.480 回答