Erste Schritte mit Mono und C# Glade#: Wie man Fenster erscheinen?
Ich habe versucht, den Einstieg mit Mono - & GTK# (ich komme aus einem hintergrund von Qt/C++ GUI-Programmierung) und beschlossen, beginnen mit einem sehr einfachen test GUI.
Habe ich installiert, die MS-Windows-Mono/GTK# - installer und dann, nach Feststellung, dass das Start-Menü link zu der Waldwiese hat nicht funktioniert (wie es Schienen nicht im Lieferumfang enthalten), habe ich die "Glade-GTK+" Windows-binary installer von der Waldwiese website.
Dann habe ich eine sehr einfache GUI in Waldwiese (auf der Unterseite von diesem post) und schrieb meine erste bit von C# - code, um Sie anzuzeigen. Jedoch, es scheint nicht zu funktionieren.
Des "Hello, World!" auf der Konsole ausgegeben korrekt und dann das Programm hängt sich auf, ohne dass das Fenster erscheint oder Fehlermeldungen gedruckt werden. Es scheint, als ob das Fenster erstellt wurde und der event-Schleife gestartet hat, sondern, dass es nicht sichtbar gemacht. Ich habe versucht, das entfernen der ersten null
von der new Glade.XML
Zeile und nicht wie die glade-Datei als Ressource, aber das machte keinen Unterschied.
Habe ich auch versucht, anstelle des Glade-GUI-xml mit dem man sich auf die GtkSharpBeginnersGuide auf der mono-Webseite (und ändern wndTestWindow
zu window1
im C# - code) und es scheint zu funktionieren perfekt, was impliziert, dass es ein problem mit meinem Glade-XML. Jedoch, ich finden es hart, um herauszufinden, was falsch mit der XML-erstellt von meiner Waldwiese installation. Kann mir jemand irgendwelche Vorschläge?
Glade-GUI:
<?xml version="1.0"?>
<glade-interface>
<!-- interface-requires gtk+ 2.12 -->
<!-- interface-naming-policy project-wide -->
<widget class="GtkWindow" id="wndTestWindow">
<property name="title" translatable="yes">Test Window</property>
<property name="window_position">center</property>
<child>
<widget class="GtkVBox" id="vboxTopLevel">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<widget class="GtkHBox" id="hboxComboList">
<property name="visible">True</property>
<child>
<widget class="GtkLabel" id="lblList">
<property name="visible">True</property>
<property name="label" translatable="yes">Here's a list:</property>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="cmbList">
<property name="visible">True</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="btnList">
<property name="label" translatable="yes">Do something</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</widget>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHButtonBox" id="hbtnboxButtonRow">
<property name="visible">True</property>
<child>
<widget class="GtkButton" id="btnOK">
<property name="label">gtk-ok</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="btnCancel">
<property name="label">gtk-cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>
C# Test-Code:
using Glade;
using Gtk;
using System;
class TestApplication
{
static void Main(string[] args)
{
System.Console.Write("Hello, World!\n");
new TestApplication(args);
}
public TestApplication(string[] args)
{
Gtk.Application.Init();
Glade.XML gxml = new Glade.XML(null, "test_mono.glade", "wndTestWindow", null);
gxml.Autoconnect(this);
Gtk.Application.Run();
}
}
Kompiliert und ausgeführt mit:
mcs -pkg:glade-sharp-2.0 -resource:test_mono.glade test_mono.cs
mono .\test_mono.exe
Versionen:
Windows: XP Service Pack 3
Glade: 3.6.7
Die MCS-Version 2.6.7.0
Mono & GTK# installiert mit mono-2.6.7-gtksharp-2.12.10-win32-2.exe
von der Mono-website.
Zusammengestellt & getestet sowohl mit cygwin und dem "Mono-2.6.7-Eingabeaufforderung".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie
<property name="visible">True</property>
Sie Ihr root-widget, so dass es liest:In Glade die Eigenschaft kann gefunden werden unter die Gemeinsame Eigenschaften-Registerkarte für das Fenster.
Möchten Sie vielleicht, zu betrachten, das herunterladen von MonoDevelop für Windows. Gtk# ist noch nicht wirklich die Waldwiese in eine lange Zeit. Im Allgemeinen benutzt Stetic, die einen designer eingebaut MonoDevelop.
http://monodevelop.com/