User Tools

Site Tools


exception_handler_wpf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

exception_handler_wpf [2018/03/25 20:02] (current)
wolfgangriedmann created
Line 1: Line 1:
 +====== Exception handler for a WPF application ======
 +
 +The following piece of code can be used to display an exception text in a WPF GUI application. Please don't forget to log the exception also to a logfile. You can take this code also as sample how to build a WPF window from pure code.
 +
 +<code>class ErrorDisplay inherit Window
 +constructor( oEx as Exception ) 
 +
 +self:Initialize( oEx )
 +
 +return
 +
 +method Initialize( oEx as Exception ) as void
 +local oGrid as Grid
 +local oTextBlock as TextBlock
 +local oButton as Button     
 +local oMargin as Thickness
 +
 +oMargin := Thickness{ 10 }
 +// Grid
 +oGrid := Grid{} 
 +oGrid:ColumnDefinitions:Add( ColumnDefinition{} )
 +oGrid:RowDefinitions:Add( RowDefinition{}{ Height := GridLength{ 200 } } )
 +oGrid:RowDefinitions:Add( RowDefinition{} )
 +oGrid:RowDefinitions:Add( RowDefinition{}{ Height := GridLength{ 100 } } ) 
 +// display the error
 +oTextBlock := TextBlock{}
 +oTextBlock:Text := oEx:Message
 +oTextBlock:Margin := oMargin
 +Grid.SetColumn( oTextBlock, 0 )
 +Grid.SetRow( oTextBlock, 0 )      
 +oGrid:Children:Add( oTextBlock )
 +// display the callstack
 +oTextBlock := TextBlock{}
 +oTextBlock:Text := oEx:StackTrace
 +oTextBlock:Margin := oMargin
 +Grid.SetColumn( oTextBlock, 0 )
 +Grid.SetRow( oTextBlock, 1 )      
 +oGrid:Children:Add( oTextBlock )
 +// Close button
 +oButton := Button{}
 +oButton:Content := "OK"
 +oButton:Click += OkButtonClick
 +oButton:Margin := oMargin
 +Grid.SetColumn( oButton, 0 )
 +Grid.SetRow( oButton, 2 )      
 +oGrid:Children:Add( oButton )
 +
 +self:Content := oGrid
 +
 +return
 +
 +method OkButtonClick( oSender as object, e as RoutedEventArgs ) as void
 +
 +self:Close()
 +
 +return
 +
 +end class</code>
  
exception_handler_wpf.txt ยท Last modified: 2018/03/25 20:02 by wolfgangriedmann