【问题标题】:How to save the response in a custom made popup dialog如何在自定义弹出对话框中保存响应
【发布时间】:2015-03-12 21:50:49
【问题描述】:

我正在尝试在 xna 中创建一个自定义弹出窗口,它显示一些文本并添加选择yesno 的选项。根据选择的按钮,应该返回一个值。我已经把所有东西都设置好了,但我不知道如何做这个特定的部分。

首先,我有一个PopupDialogHandler 类,它包含所有Popup_Dialog 的列表并管理它们各自的click 事件,还管理更新和绘图。

Popup_Dialog 类是管理创建新 popup 对象的类。

一切都完成了,我画了矩形,画了文字,正在处理按钮,但是我不知道应该用什么方法来进行简单而有效的结果管理。

类似于 winforms 的 MessageBox.Show 返回。 目前,我创建Popup_Dialog 对象并将其添加到PopupDialogHandler 类的列表中,从那里我循环遍历列表中的所有项目并执行绘图和更新逻辑

【问题讨论】:

  • 这个范围很广。你能发布一些代码,也许可以更好地集中你的问题吗?
  • 回到我的 XNA 时代,我的对话框上有一个 Closed 事件,该事件在对话框关闭时触发(例如,有人单击了确定或其他)。 Closed 事件传递了一个包含对话结果等的DialogClosedEventArgs 对象。
  • @Verdolino,我认为更多可能只会使它更复杂。我只需要知道该往哪个方向走。我不知道从哪里开始实现我的目标。
  • @itsme86,我会试试的
  • @val 你会拿一些 vb.net 代码吗?我写了一个自定义消息框。

标签: c# monogame


【解决方案1】:

您可以通过操作来做到这一点。在 PopupDialog 类中,将private Action<int> Callback; 添加到属性中,并将此代码添加到构造函数中:

public PopupDialog(Action<int> callback /*, rest of constructor parameters if any */)
{
    /* Rest of constructor code, if any */

    if (callback == null)
        throw new ArgumentNullException();
    Callback = callback;
}

在 Click 处理程序中,只需调用 Callback() 并将您要返回的值作为参数。

在接收/等待类中,添加以下代码:

private void CallbackFunction(int theReturnedValue)
{
    // do something with the value here
}

并在创建新弹出窗口时像这样传递函数:

var RC = new PopupDialog(CallbackFunction);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多