【问题标题】:How to know if MS Chart Controls are installed on client workstation?如何知道客户端工作站上是否安装了 MS Chart Controls?
【发布时间】:2011-10-14 09:15:10
【问题描述】:

我使用 MS Chart Controls 开发了一个 ClickOnce 应用程序。它适用于图表部分。 但是,由于需要预先安装 Chart Control(具有管理员权限而不是经典 ClickOnce 部署),我需要检测该组件在机器上是否可用。

所以我尝试创建一个新图表并处理可能的异常,但似乎无法捕获它(异常级别太低?):

Try
  Dim oChart as New Chart
Catch
  ' Some user-friendly message to ask the user to contact the helpdesk
End Try

此代码永远不会执行:当我输入此代码所在的事件时,我得到一个未处理的异常。

有关调用的详细信息,请参阅此消息的末尾 即时 (JIT) 调试,而不是此对话框。

*****异常文本** ***** System.IO.FileNotFoundException:无法加载文件或程序集 'System.Windows.Forms.DataVisualization,版本=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其其中之一 依赖项。该系统找不到指定的文件。文件名: 'System.Windows.Forms.DataVisualization,版本=3.5.0.0, 文化=中性,PublicKeyToken=31bf3856ad364e35' 在 SIPReportingControl.Main.expMain_SelectedGroupChanged(对象发送者, GroupEventArgs e) 在 Infragistics.Win.UltraWinExplorerBar.SelectedGroupChangedEventHandler.Invoke(对象 发件人,GroupEventArgs e)

您有什么想法可以:

  • 能够使用 ClickOnce 部署 MS 图表控件(我认为不可能)。
  • 检测是否安装了图表控件。
  • 捕获这个奇怪的异常。

提前致谢。

编辑 调用方法(即使我点击报告以外的其他组也会产生异常):

Private Sub expMain_SelectedGroupChanged(sender As Object, e As Infragistics.Win.UltraWinExplorerBar.GroupEventArgs) Handles expMain.SelectedGroupChanged
    Try
        If blnDoEvent Then
            CleanControls()
            Select Case e.Group.Key
                Case "Search"
                    DisplayGrid(True)
                Case "AddEdit"
                    DisplayAddEdit(Nothing)
                Case "Reporting"
                    Dim oChart As New Chart
            End Select
        End If
    Catch ex As Exception
        MsgBox(ex.Message & vbCrLf & ex.StackTrace)
    End Try
End Sub

【问题讨论】:

    标签: vb.net exception-handling clickonce mschart


    【解决方案1】:

    我看到一个有趣的答案,关于在为函数调用生成的 MSIL 代码中引发异常,不幸的是它已被删除,我无法对其添加评论。

    我了解到您的代码不负责触发该事件。我建议将整个语句放在一个 sub 中,并以这种方式用 try catch 包围它:

    Private Sub expMain_SelectedGroupChanged(sender As Object, e As Infragistics.Win.UltraWinExplorerBar.GroupEventArgs) Handles expMain.SelectedGroupChanged 
        Try 
            RedirectTo(e.Group.Key)
        Catch ex As Exception 
            MsgBox(ex.Message & vbCrLf & ex.StackTrace) 
        End Try 
    End Sub 
    
    Sub RedirectTo(Screen as string)
        If blnDoEvent Then 
            CleanControls() 
            Select Case Screen 
                Case "Search" 
                     DisplayGrid(True) 
                Case "AddEdit" 
                     DisplayAddEdit(Nothing) 
                Case "Reporting" 
                     Dim oChart As New Chart 
            End Select 
        End If
    End Sub
    

    好点了吗?

    【讨论】:

      猜你喜欢
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      相关资源
      最近更新 更多