cancel
Showing results for 
Search instead for 
Did you mean: 

WPF exception: Value cannot be null. Parameter name: window - SOLUTION

Former Member
0 Kudos

Hi Ludek and other CR experts,

I find a bug in your u201CCrystal Reports for Visual Studio 2010u201D. When I use CrystalReportsViewer in our WPF application a get this exception:

Value cannot be null. Parameter name: window

System.ArgumentNullException was unhandled

Message=Value cannot be null.

Parameter name: window

Source=PresentationFramework

ParamName=window

StackTrace:

at System.Windows.Interop.WindowInteropHelper..ctor(Window window)

at System.Windows.MessageBox.Show(Window owner, String messageBoxText, String caption, MessageBoxButton button, MessageBoxImage icon)

at SAPBusinessObjects.WPF.Viewer.ViewerCore.HandleExceptionEvent(Object eventSource, Exception e, Boolean suppressMessage)

at SAPBusinessObjects.WPF.Viewer.ViewerCore.HandleExceptionEvent(Object eventSource, Exception e)

at SAPBusinessObjects.WPF.Viewer.ViewerCore.OnLoadingComplete(Boolean bSuccess)

u2026

How can reproduce exception?

1. Add CrystalReportsViewer to UserControl or Window

2. Donu2019t set CrystalReportsViewer Owner (must be null)

3. Cause CrystalReportsViewer error, e.g. set wrong ReportSource:

public partial class Window1 : Window

{

public Window1()

{

InitializeComponent();

//reportViewer.Owner = this;

//CrystalReport1 newCR = new CrystalReport1();

//reportViewer.ViewerCore.ReportSource = newCR;

reportViewer.ViewerCore.ReportSource = new List<string> { "Martin", "Kurek", "Crystal", "Reports", "Expert", ";>" };

}

}

Reason:

CrystalReportsViewer (SAPBusinessObjects.WPF.Viewer) handle internal error and try show MessageBox: System.Windows.MessageBox.Show(Window owner, String messageBoxText, String caption, MessageBoxButton button, MessageBoxImage icon)

Show method get u201CWindow owneru201D parameter and CrystalReportsViewer try pass Owner property CrystalReportsViewer.Owner (SAPBusinessObjects.WPF.Viewer.ViewerCore.Owner), that is null, what does it cause exception.

Solution:

Set CrystalReportsViewer Owner propery.

1. CrystalReportsViewer in Window:

public Window1()

{

InitializeComponent();

reportViewer.Owner = this;

2. CrystalReportsViewer in UserControl

public UserControl1()

{

InitializeComponent();

//reportViewer.Owner = Window.GetWindow(this);//in constructor is still null

this.Loaded += new RoutedEventHandler(UserControl_Loaded);

}

void UserControl_Loaded(object sender, RoutedEventArgs e)

{

reportViewer.Owner = Window.GetWindow(this);

}

Thanks.

Martin.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Thank you Martin!

For those of you using the WPF viewer within a WinForm using a Element Host, you'll need to:

1. create a window

2. set the viewer owner to the window

3. Use the WindowInteropHelper to set the owner

System.Windows.Window window = new System.Windows.Window();

viewer.Owner = window;

System.Windows.Interop.WindowInteropHelper helper = new System.Windows.Interop.WindowInteropHelper(window);

helper.Owner = this.Handle;

svend_villsen4
Discoverer
0 Kudos

Hi There. This seems to be the solution I need, based on the error, but can someone please explain how to apply this in plain English? Is it something that needs to be applied to the Report or the viewer application (that I have no control over as it's embedded)

Thanks

Svend

Answers (1)

Answers (1)

Former Member
0 Kudos

FIXED ;>