gpt4 book ai didi

c# - Crystal Reports - 值不能为空。参数名称 : window

转载 作者:太空狗 更新时间:2023-10-29 21:33:47 25 4
gpt4 key购买 nike

我最近在尝试通过对话框将 Crystal 报表加载到我的 WPF 应用程序时遇到了一个不寻常的错误,该报表将显示为正在加载几秒钟,然后抛出一个错误,指出“Value cannot be null .参数名称:window"

这让我感到困惑,据我所知, Crystal 报表不使用名为 window 的参数。

这是我的代码:

带有 CrystalReportsViewer 的简单窗口

<Window x:Class="Client.Views.ReportsWindowView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:SAPBusinessObjects.WPF.Viewer;assembly=SAPBusinessObjects.WPF.Viewer"
Title="ReportsWindowView" Height="300" Width="300" Loaded="Window_Loaded">
<Grid>
<my:CrystalReportsViewer ShowOpenFileButton="True" Grid.Column="1" x:Name="ReportView"/>
</Grid>

并从后面的代码加载报告(为简单起见,我删除了标准的 ConnectionInfo 代码)

 cryRpt = new ReportDocument();
cryRpt.Load("report.rpt");
ReportView.ViewerCore.ReportSource = cryRpt;

最佳答案

事实证明,Crystal Reports 在尝试显示内部错误时确实使用了一个名为 window 的参数。

CrystalReportsViewer 处理内部错误并尝试显示 MessageBox:

System.Windows.MessageBox.Show(窗口所有者、字符串 messageBoxText、字符串标题、MessageBoxButton 按钮、MessageBoxImage 图标)

Show 方法获取 u201CWindow owneru201D 参数,CrystalReportsViewer 尝试传递 Owner 属性 CrystalReportsViewer.Owner,但默认情况下 owner 为 null,因此我们会收到此意外错误。

对此的一个简单修复是在代码隐藏中(即使在使用 mvvm 时)我们只需通过以下代码将所有者设置为当前窗口:

ReportView.Owner = Window.GetWindow(this);

在 OnLoaded 事件或类似事件中执行此操作,您会发现现在您会收到一个消息框,其中包含 CrystalReportsViewer 抛出的内部错误。

此解决方案归功于此 thread

关于c# - Crystal Reports - 值不能为空。参数名称 : window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24655875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com