0

mono Gtk# を使用して単純なフォーム アプリケーションを作成しようとしていますが、Gtk.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の制御下で何をしているのかを説明できる人がいれば幸いです。

4

1 に答える 1

1

返すオブジェクトをダイアログ オブジェクトに格納し、プロパティを使用してそのオブジェクトへのアクセスを提供するだけです。の戻り値を調べて、ユーザーがキャンセル ボタンを押したかどうか (もしあれば) を確認することを忘れないでくださいRun()

例については、公式ドキュメントのストック FileChooserDialog のサンプル コードを参照してください。

于 2013-08-25T14:08:20.093 に答える