2010-08-30 65 views
2

编辑:Click here for the code在MonoDevelop(Gtk#)中获取漂亮的小部件大小

所以我正在用MonoDevelop(版本2.4)进行接口构建的实验。我想习惯的“容器内的容器”的概念,基于GTK。我创建了一个带有两个...盒子的盒子,在顶盒上放置一个菜单,在底部放置一个桌子。我将表格设置为两列和五行。在前四排,我在左边放了一个标签,右边放了一个输入。在右下角的单元格上放上一个按钮。它看起来像这样:

GUIBlah Application

这里是我与挣扎的事情:

1)如何获取表的列不相等宽度的?有趣的是,当我刚刚加入标签,并没有添加输入框中的是,左栏用完,才需要为标签的空间。现在是50/50,它不会改变。

2)如何让标签右对齐,使其文本中的最终“:”得到很好的对齐并靠近输入框?我将标签的“合理”属性设置为“正确”,似乎被忽略。

3)“打开”和“关闭”行动“文件”菜单上包括与OK按钮显示模式消息框下的动作代码。但按下OK按钮不会关闭消息框,只关闭消息框窗口。代码是:

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

回答

4

1)至少设置一个Entry小部件以“展开”和“填充”水平。

2)将标签的Xalign属性设置为1.0。对齐控制包裹文本的布局,Xalign/Yalign控制整个块在标签区域内的位置。

3)你应该在完成之后销毁()对话框。或者,你可以隐藏()它并重新使用它。你也应该看看使用对话框的Run()方法 - 通常是这样的:

var dialog = new FooDialog(...); 
try { 
    dialog.Show(); 
    var response = (ResponseType) dialog.Run(); 
    if (response == ResponseType.Ok) { 
     //do stuff 
    } 
} finally { 
    dialog.Destroy(); 
} 
+0

提示#3工作。 :)提示#1和#2没有影响。如果你想仔细看看,这里是代码:http://users.vialink.com.br/jcastro/GUIBlah.tgz – JCCyC 2010-08-31 17:46:27

+1

Re。 #2,您的标签需要“填充”而不是“展开”。请参阅以下屏幕录像:http://is.gd/ePzhZ - 您希望标签用于填充分配的所有空间,并且这些条目用于填充分配的所有空间并扩展到任何可用空间。 – 2010-09-01 16:47:25

+0

工作正常!我也解决了#1 ...桌子上有“同质”属性集!现在这是我想要的方式。谢谢! – JCCyC 2010-09-01 17:44:31