Mono Gtk.Dialog返回对象作为响应

时间:2013-08-24 17:49:00

标签: c# mono gtk modal-dialog

我正在尝试用单声道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控制下做了什么。

1 个答案:

答案 0 :(得分:1)

只需在对话框对象中存储要返回的对象,并使用属性提供对它的访问。不要忘记检查用户是否按下取消按钮(如果有的话),方便地检查Run()的返回值。

有关示例,请参阅官方文档中的sample code for the stock FileChooserDialog