モノ、C#やグレイド#入門:ウィンドウを表示させるには?

StackOverflow https://stackoverflow.com/questions/3608157

  •  25-09-2019
  •  | 
  •  

質問

私はモノ&GTK#で始めるしようとしている(私はQT / C ++ GUIプログラミングの背景から来る)と非常に簡単なテストGUIを開始することを決めたしてきます。

私はMS Windowsのモノラル/ GTKの#インストーラをインストールしてから、(パッケージに含まれるようには見えなかったとして)グレイドへの[スタート]メニューのリンクが機能しなかったことを発見すると、私は」グレイドを使用GTK +の」Windowsグレードのウェブサイトからバイナリインストーラます。

私はその後、(この記事の下部にある)Gladeの中には非常にシンプルなGUIを作成し、それを表示するには、C#のコードの私の最初のビットを書きました。しかし、それは正常に動作していないようです。

"こんにちは、世界!"正しくコンソールに出力された後、表示されるウィンドウまたはすべてのエラーメッセージなしでプログラムがハングが印刷されています。ウィンドウが作成され、イベントループが開始されたが、それが見えるようにされていないことをしているかのように思えます。私はnullラインから最初new Glade.XMLを削除し、リソースとして空き地ファイルを含めない試みたが、それは何の違いが行われていません。

私はまた、上の1とグレイドGUIのXMLを交換しようとしましたモノのウェブサイトの上GtkSharpBeginnersGuide(およびC#コードでwndTestWindowwindow1を変更)し、完全に私の空き地XMLに問題があることを意味している動作しているようです。しかし、私は私のグレイドのインストールによって作成されたXMLが悪いのかを把握するのは難しいそれを見つけることです。缶誰の提供の任意の提案ですか?

グレイド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#のテストコード:

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

でコンパイルして実行します:

mcs -pkg:glade-sharp-2.0 -resource:test_mono.glade test_mono.cs
mono .\test_mono.exe

バージョン:

のWindows:XPサービスパック3 グレイド:3.6.7 MCSバージョン2.6.7.0 モノ&GTK#は、モノのウェブサイトからmono-2.6.7-gtksharp-2.12.10-win32-2.exeを使用してインストールします。

コンパイル&Cygwinと "プロンプトモノ2.6.7コマンド" を使用して、両方をテストします。

役に立ちましたか?

解決

ウィジェットので、それが読み込むルートに<property name="visible">True</property>を追加してみてください。

<?xml version="1.0"?>
<glade-interface>
  <!-- interface-requires gtk+ 2.12 -->
  <!-- interface-naming-policy project-wide -->
  <widget class="GtkWindow" id="wndTestWindow">
    <property name="visible">True</property>
    <property name="title" translatable="yes">Test Window</property>
    <property name="window_position">center</property>
    <child>

でGladeのプロパティウィンドウの一般的なプロパティ]タブの下に見つけることができます。

他のヒント

は、Windows用にMonoDevelopのダウンロードを見たいかもしれません。 Gtk#は本当に長い時間にグレードを使用していません。一般的に、それはMonoDevelopのに組み込まれているデザイナーを持っているSteticを、使用します。

http://monodevelop.com/する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top