我正在尝试用单声道Gtk编写一个简单的表单应用程序#但是我已经卡在开头我创建了一个继承自Gtk.Dialog的Dialog表单。收集基本信息的对话框表单,并将这些信息作为对象返回到主窗口或触发一些事件到主窗口,以便它可以做它想要做的事情,在这种情况下将数据绑定到TreeView控件(这是另一个故事)。这些是我到目前为止所尝试过的;
对话框代码
public partial class MyDialog : Gtk.Dialog
{
public MyDialog ()
{
this.Build ();
}
protected void OnButtonOkClicked (object sender, EventArgs e)
{
int portNumber = 0;
iint.TryParse (spnPort.Text, out portNumber);
var myObj = new MyObj ();
myObj.Username = txtUsername.Text;
myObj.Password = txtPassport.Text;
// did not work as ParentWindow is a Gdk.Window
//(this.ParentWindow as MainWindow).AddObj(myObj);
//Also did not work because there is no response related method
//or property in the Dialog please read below code block this will make more sense
//this.OnResponse(myObj);
}
}
要拨打电话的MainWindow代码
protected void OnAddActionActivated (object sender, EventArgs e)
{
MyDialog s = new MyDialog();
s.Run();
s.Response += HandleResponse;
}
void HandleResponse (object o, ResponseArgs args)
{
//as this event has args.Args and args.RetVal I thought one would do what I wanted
//maybe I am using them all wrong
}
我很感激,如果有人可以解释什么是Gdk.Window是什么以及它在Gtk控制下做了什么。
答案 0 :(得分:1)
只需在对话框对象中存储要返回的对象,并使用属性提供对它的访问。不要忘记检查用户是否按下取消按钮(如果有的话),方便地检查Run()
的返回值。
有关示例,请参阅官方文档中的sample code for the stock FileChooserDialog。