使用Gtk在对话框中从主窗口更改对象

本文关键字:窗口 对象 Gtk 对话框 使用 | 更新日期: 2023-09-27 18:02:09

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

我有一个Gtk程序。窗口和Gtk.Dialog。在窗口中,我使用一个自编码对象。对话框需要知道对象,以便对其进行更改。当你点击OK-Button时,Window的对象必须知道这些变化。

谁能给我举个例子吗?

使用Gtk在对话框中从主窗口更改对象

Dialog有一个可以钩子的Response事件,并且在传递给处理程序的参数中是被按下的对话框响应按钮。

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创建了一个对话框。对话框类:

public MyDialog : Gtk.DialogBox
{
    ...
}

在这个类中添加属性以获取值:

// 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;
    }
}

所以从你的主窗口,你可以获取和设置内容,正如斯凯勒之前提到的