mario88
24-01-2005, 12:42
Ich hab als Übung einen USt-Berechner in C# mit gtk# geschrieben. Ich hab dazu jetzt zwei Fragen:
1. Ist es normal, dass das unter Linux mit mono kompilierte Binary unter Windows mit einer Invalid.Cast.Exception abstürzt? (obwohl ich NICHTS caste..)
2. Wenn ich den Code unter Windows mit VS.NET recompile gehts unter Windows ohne Exception. Jedoch wird der Prozess ustberechner.exe nicht beendet, nachdem ich das Fenster schließe...
Kann mir wer sagen warum?
Hier der Code:
using System;
using Gtk;
using Glade;
public class UStBerechner
{
[Widget] public Window window_ustberechner;
[Widget] private Label lbl_betrag;
[Widget] private Entry txt_betrag;
[Widget] private Button cmd_berechne;
[Widget] private Label lbl_ergebnis;
[Widget] private Entry txt_ergebnis;
[Widget] private RadioButton radiobutton_exclusive;
[Widget] private RadioButton radiobutton_inclusive;
public UStBerechner()
{
Glade.XML ustberechner = new Glade.XML(null, "ustberechner.glade", "window_ustberechner", null);
ustberechner.Autoconnect(this);
window_ustberechner.Resizable=false;
txt_ergebnis.Editable=false;
}
/* Connect the Signals defined in Glade */
public void on_window_ustberechner_delete_event (object o, DeleteEventArgs args)
{
Application.Quit ();
args.RetVal = true;
}
private void on_cmd_berechne_clicked(object sender, System.EventArgs e)
{
double ergebnis=0;
try
{
if (radiobutton_inclusive.Active==true)
ergebnis=Convert.ToDouble(txt_betrag.Text) / 120 * 20;
else
ergebnis=Convert.ToDouble(txt_betrag.Text) / 100 * 20;
txt_ergebnis.Text=Convert.ToString(ergebnis);
}
catch (System.FormatException ex)
{
this.meldung("Input-Error, try again!");
}
}
private void on_menuItem_Beenden_activate(object sender, System.EventArgs e)
{
Application.Quit();
}
private void on_menuItem_Kopieren_activate(object sender, System.EventArgs e)
{
// gute Frage gg
}
private void on_menuItem_Einfuegen_activate(object sender, System.EventArgs e)
{
// ebenso gg
}
private void on_menuItem_Info_activate(object sender, System.EventArgs e)
{
Info about = new Info();
about.window_info.Show();
}
public void meldung(string text)
{
MessageDialog fehler = new MessageDialog(window_ustberechner, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.Ok, text);
int result;
result = fehler.Run();
fehler.Destroy();
}
public static int Main()
{
Application.Init();
new UStBerechner();
Application.Run();
return 0;
}
}
1. Ist es normal, dass das unter Linux mit mono kompilierte Binary unter Windows mit einer Invalid.Cast.Exception abstürzt? (obwohl ich NICHTS caste..)
2. Wenn ich den Code unter Windows mit VS.NET recompile gehts unter Windows ohne Exception. Jedoch wird der Prozess ustberechner.exe nicht beendet, nachdem ich das Fenster schließe...
Kann mir wer sagen warum?
Hier der Code:
using System;
using Gtk;
using Glade;
public class UStBerechner
{
[Widget] public Window window_ustberechner;
[Widget] private Label lbl_betrag;
[Widget] private Entry txt_betrag;
[Widget] private Button cmd_berechne;
[Widget] private Label lbl_ergebnis;
[Widget] private Entry txt_ergebnis;
[Widget] private RadioButton radiobutton_exclusive;
[Widget] private RadioButton radiobutton_inclusive;
public UStBerechner()
{
Glade.XML ustberechner = new Glade.XML(null, "ustberechner.glade", "window_ustberechner", null);
ustberechner.Autoconnect(this);
window_ustberechner.Resizable=false;
txt_ergebnis.Editable=false;
}
/* Connect the Signals defined in Glade */
public void on_window_ustberechner_delete_event (object o, DeleteEventArgs args)
{
Application.Quit ();
args.RetVal = true;
}
private void on_cmd_berechne_clicked(object sender, System.EventArgs e)
{
double ergebnis=0;
try
{
if (radiobutton_inclusive.Active==true)
ergebnis=Convert.ToDouble(txt_betrag.Text) / 120 * 20;
else
ergebnis=Convert.ToDouble(txt_betrag.Text) / 100 * 20;
txt_ergebnis.Text=Convert.ToString(ergebnis);
}
catch (System.FormatException ex)
{
this.meldung("Input-Error, try again!");
}
}
private void on_menuItem_Beenden_activate(object sender, System.EventArgs e)
{
Application.Quit();
}
private void on_menuItem_Kopieren_activate(object sender, System.EventArgs e)
{
// gute Frage gg
}
private void on_menuItem_Einfuegen_activate(object sender, System.EventArgs e)
{
// ebenso gg
}
private void on_menuItem_Info_activate(object sender, System.EventArgs e)
{
Info about = new Info();
about.window_info.Show();
}
public void meldung(string text)
{
MessageDialog fehler = new MessageDialog(window_ustberechner, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.Ok, text);
int result;
result = fehler.Run();
fehler.Destroy();
}
public static int Main()
{
Application.Init();
new UStBerechner();
Application.Run();
return 0;
}
}