(注意:我没有写这个代码,它是从一个插件项目模板生成的)
当我尝试使用带有Gtk#的GTK Builder来加载glade文件时,会抛出一个异常,即文件必须以元素开头.
错误:
GLib.GException has been thrown Error on line 1 char 1: Document must begin with an element (e.g. <book>)
MainWindow.glade:
<?xml version="1.0" encoding="UTF-8"?> <interface> <requires lib="gtk+" version="3.0" /> <object class="GtkWindow" id="window1"> <property name="can_focus">False</property> <child> <object class="GtkBox" id="Box1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="orientation">vertical</property> <child> <object class="GtkLabel" id="label1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="yalign">0.47999998927116394</property> <property name="label" translatable="yes">Hello World! This button has been clicked 0 time(s).</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">0</property> </packing> </child> <child> <object class="gtkbutton" id="button1"> <property name="label" translatable="yes">Click me!</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="receives_default">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">1</property> </packing> </child> </object> </child> </object> </interface>
MainWindow.cs:
using System; using Gtk; using UI = Gtk.Builder.ObjectAttribute; public partial class MainWindow: Gtk.Window { Builder builder; [UI] Gtk.Button button1; [UI] Gtk.Label label1; int clickedTimes; public static MainWindow Create () { Builder builder = new Builder (null,"discordEditor.interfaces.MainWindow.glade",null); return new MainWindow (builder,builder.Getobject ("window1").Handle); } protected MainWindow (Builder builder,IntPtr handle) : base (handle) { this.builder = builder; builder.Autoconnect (this); DeleteEvent += OnDeleteEvent; button1.Clicked += onButtonClick; } protected void onButtonClick (object sender,EventArgs a) { clickedTimes++; label1.Text = string.Format ("Hello World! This button has been clicked {0} time(s).",clickedTimes); } protected void OnDeleteEvent (object sender,DeleteEventArgs a) { Application.Quit (); a.RetVal = true; } }
我不明白为什么会发生这种情况,除非它是GTK#3的一个错误,因为它尚未完全发布.我真的想用GTK3代替GTK2,所以有人会建议吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。