C#:使用 Gtk 在对话框中从 MainWindow 更改对象

C#: Change Object from MainWindow in an Dialog using Gtk

我认为这只是一个小问题,但我没有得到解决。

我有一个带有 Gtk.Window 和 Gtk.Dialog 的程序。在 Window 中,我使用了一个自编码对象。对话框需要知道对象才能更改它。当您单击“确定”按钮时,Window 的对象必须知道所做的更改。

任何人都可以给我举个例子吗?

非常感谢。

对话框有一个您可以挂接的响应事件,传递给处理程序的参数是按下的对话框响应按钮。

var md = new MessageDialog (
            null,
            DialogFlags.DestroyWithParent,
            MessageType.Info,
            ButtonsType.OkCancel,
            "Your message");

md.Response += (o, args) => {
    if (args.ResponseId == ResponseType.Ok) {
        // do your stuff with the object
    }
};

md.Run ();
md.Destroy ();

我想您已经通过扩展 Gtk.DialogBox class:

创建了一个对话框
public MyDialog : Gtk.DialogBox
{
    ...
}

在此 class 添加属性以获取值:

// The entry containing the customer name
private Entry _customerName;

// Gets or sets the customer name
public string Name
{
    get
    {
        return this._customerName.Text;
    }

    set
    {
        this._customerName.Text = value;
    }
}

所以从你的 main window,你可以获取和设置内容,正如 Skyler 之前提到的那样。