2

編集:コードはここをクリックしてください

そのため、MonoDevelop(バージョン2.4)を使用したインターフェース構築を実験しています。「コンテナ内のコンテナ」というGtkの概念に慣れようとしています。2つの...er...ボックスでvboxを作成し、上のボックスにメニューを配置し、下のボックスにテーブルを配置しました。テーブルを2列と5行に設定しました。上の4行で、左側にラベルを、右側にエントリを配置します。右下のセルにボタンを配置しました。次のようになります。

GUIBlahアプリケーション

これが私が苦労していることです:

1)テーブルの列の幅を同じにしないようにするにはどうすればよいですか?面白いことに、ラベルだけを追加し、まだ入力ボックスを追加していなかったとき、左側の列はラベルに必要なスペースだけを使い果たしました。今では50/50で、動揺しません。

2)ラベルを右揃えにして、テキストの最後の「:」を適切に揃えて入力ボックスに近づけるにはどうすればよいですか?ラベルの「Justify」プロパティを「Right」に設定しましたが、無視されたようです。

3)[ファイル]メニューの[開く]および[閉じる]アクションのアクションコードは、[OK]ボタンのあるモーダルメッセージボックスを表示することで構成されています。ただし、[OK]ボタンを押してもメッセージボックスは閉じられません。メッセージボックスウィンドウを閉じるだけで閉じられます。コードは次のとおりです。

(new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok,
                  "Open Action")).Show();
4

1 に答える 1

4

1)少なくとも1つのエントリウィジェットを水平方向に「展開」および「塗りつぶし」に設定します。

2)ラベルのXalignプロパティを1.0に設定します。Justifyは折り返されたテキストのレイアウトを制御し、Xalign/Yalignはラベルの領域内のブロック全体の位置を制御します。

3)ダイアログを使い終わったら、ダイアログをDestroy()する必要があります。または、Hide()して再利用することもできます。ダイアログのRun()メソッドの使用も検討する必要があります。通常は次のようになります。

var dialog = new FooDialog(...);
try {
    dialog.Show();
    var response = (ResponseType) dialog.Run ();
    if (response == ResponseType.Ok) {
        //do stuff
    }
} finally {
    dialog.Destroy ();
}
于 2010-08-30T22:49:12.287 に答える