myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- GUI: WPF und XAML (https://www.mycsharp.de/wbb2/board.php?boardid=85)
--- Beim Öffnen eines WPF-Fensters aus einer Forms-Applikation erscheint Exception (https://www.mycsharp.de/wbb2/thread.php?threadid=122561)


Geschrieben von thorran am 21.01.2020 um 14:43:
  Beim Öffnen eines WPF-Fensters aus einer Forms-Applikation erscheint Exception
Hallo,

ich habe eine Dll, die WPF-Dialoge enthält (gekapselt):

Beispiel:

C#-Code:
public void ShowError(Exception exception)
{
   new WpfWindow(exception.Message).ShowDialog();
}

In meine Forms-Applikation binde ich die Dll ein und kann über ShowError(exc) auch das Fenster öffnen.

Aber:
Wen z.B. beim Start der Forms-Applikation die Methode aufgerufen wird bekomme ich manchmal folgende Exception:

Fehlermeldung:
Zeilennummer "12" und Zeilenposition "6" von "Beim Festlegen der Eigenschaft "System.Windows.FrameworkElement.Width" wurde eine Ausnahme ausgelöst.".

XML-Code:
<Window x:Class="Tools.ErrorWindow"
             x:ClassModifier="internal"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:p="clr-namespace:Tools"
             mc:Ignorable="d"
             Title="" SizeToContent="WidthAndHeight" WindowStyle="SingleBorderWindow"
             ResizeMode="NoResize" ShowInTaskbar="False" Icon="Resources/BlancIcon.ico" Loaded="Window_Loaded"
>
    <StackPanel Width="550">

Wenn die Applikation läuft, lässt sich das WPF-Fenster problemlos öffnen.

Kann mir jemand sagen, was ich falsch mache?

viele Grüße
Thorran


Geschrieben von Abt am 21.01.2020 um 15:16:
 
Was sagt Dir die InnerException Deiner Exception? Da wird ne Info drin stehen.


Geschrieben von thorran am 21.01.2020 um 15:19:
 
InnerException:

Fehlermeldung:
In der Arithmetischen Operation ist ein Über- oder Unterlauf aufgetreten.


Geschrieben von Abt am 21.01.2020 um 15:26:
 
Ich möchte Dir eigentlich nicht alles aus der Nase ziehen; daher ein weiterer Tipp zur Selbsthilfe:

Was sagt Dir diese Exception? Hast Du danach gegoogelt, wann diese Exception auftreten kann?
Tipp: die englische Fehlermeldung lautet

Fehlermeldung:
Overflow or underflow in the arithmetic operation.

Deine Google Recherchen sollten Dir eigentlich ein Hinweis geben, dass dies an einer Grid-/Layout-Auflösung liegen könnte; weil die Werte sehr klein oder sehr groß sind.
Mehr sieht man hier als Helfer auch nicht.


Geschrieben von thorran am 22.01.2020 um 07:16:
 
Ok, Danke!

...ich verstehe, dass der Wert 500 zu klein oder (sehr wahrscheinlich zu groß) ist.

Aber warum?
Wenn ich das Fenster im laufenden Betrieb öffne, wird alles Prima dargestellt.
Wenn ich das Fenster beim Start der Applikation anzeigen will bekomme ich teilweise diese Fehlermeldung.


Folgende Lösung habe ich gefunden:

C#-Code:
[DllImport( "msvcr70.dll", CallingConvention = CallingConvention.Cdecl )]
public static extern int _fpreset();

// Konstruktor
public SomeView()
{
  // Reset the Floating Point (When called from External Application there was an Overflow exception)
  _fpreset();

  // Initialize the Component
  InitializeComponent();
}

Link:
 https://social.msdn.microsoft.com/Forums/vstudio/en-US/a31f9c7a-0e15-4a09-a544-bec07f0f152c/systemarithmeticexception-overflow-or-underflow-in-the-arithmetic-operation?forum=wpf

Mal ganz ehrlich, das sieht schon sehr Abenteuerlich aus!

Gibt es da keine schöne Lösung für das Problem?


Geschrieben von Abt am 22.01.2020 um 14:39:
 
Zitat von thorran:
Mal ganz ehrlich, das sieht schon sehr Abenteuerlich aus!

Genauso wie etwas durchaus auch als "Abenteuerlich" bezeichnet werden kann, was Du da insgesamt machst - daher passt das doch fröhlich Augenzwinkern

Zitat von thorran:
...ich verstehe, dass der Wert 500 zu klein oder (sehr wahrscheinlich zu groß) ist.

Aber warum?

Als ich damals über das Problem gestoßen bin, bin ich der Meinung, dass die entsprechenden Treffer in Google gesagt haben, dass das daran liegt, dass der Wert zu dem Zeitpunkt eben NICHT der gewünschte Wert von (in Deinem Fall) 500 ist; sondern zu diesem Zeitpunkt noch ein ungültiger Wert (zB -1?) ist.
Aber bin mir sicher, dass das in einen der ersten Treffer steht. Kannst es hier ja quoten, wenn Du es findest Daumen hoch


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 03.06.2020 16:07