PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit gtk# unter Windows



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;
}
}

BeS
24-01-2005, 16:39
Hallo,
häng doch am besten mal den ganzen Quellcode an deinen Beitrag an, dass macht es einfach sich das Programm und die Fehlermeldungen mal anzusehen.

Allgemein gibt es ab und zu noch Probleme mit windows.
Ein Problem könnte u.a. sein, dass du unter GNU/Linux gtk2.4 und glade2.6 verwendest. Dann mußt du unter windows die devel-Version verwenden, die stable version setzt noch auf gtk2.2 und eine ältere glade Version.

Ich habe hier aber auch ein Programm, dass eigentlich nichts besonderes macht, unter GNU/Linux läuft, unter windows und GNU/Linux kompiliert aber beim Ausführen unter windows mir ein Anonymes:

"Unhandled Exception: Glade.HandlerNotFoundException: No handler found for signal clicked"

entgegen wirft.
Mit 'mint' funktioniert das Programm dann wieder unter windows, das wäre bei dir vielleicht auch ein Versuch Wert.

Mono ist halt noch sehr jung und in starker Entwicklung, da kann man noch nicht erwarten, dass alles Rund läuft. Aber die Entwicklung lässt auf etwas sehr positives für die Zukunft hoffen.

mario88
24-01-2005, 17:57
Also die gtk#-runtime unter Windows setzt schon auf GTK2.4 auf...