从对话框中调用表单 [英] Calling Forms from Dialogs
本文介绍了从对话框中调用表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个简单的表格
[Serializable]
class CreateNewLeadForm
{
public string FirstName;
public string LastName;
public static IForm<CreateNewLeadForm> BuildForm()
{
return new FormBuilder<CreateNewLeadForm>()
.Message("Lets create a New Lead")
.Field(nameof(FirstName))
.Field(nameof(LastName))
.Build();
}
};
还有一个简单的对话框
public class GreetDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> argument)
{
context.Wait(MessageReceivedAsync);
}
}
如何从主对话框本身调用启动FormDialog"?总的来说,我们如何在对话框中创建新对话框?
How do I call a Initiate a FormDialog from the main Dialog itself? In general how do we intiate new dialogs within a Dialog?
推荐答案
要启动FormDialog,您可以执行以下操作:
In order to initiate a FormDialog you can just do:
var myform = new FormDialog<CreateNewLeadForm>(new CreateNewLeadForm(), CreateNewLeadForm.BuildForm, FormOptions.PromptInStart, null);
context.Call<CreateNewLeadForm>(myform, FormCompleteCallback);
看看 PizzaBot 例如.
要在对话框中启动新对话框,您可以执行以下操作:
To initiate new dialogs within a Dialog you can do:
- context.Call传递新对话框的实例和完成回调(如表格所示)
-
上下文.转发,您可以在其中将消息转发到子对话框
context.Forward(新的MyChildDialog(),ResumeAfterChildDialog,消息,CancellationToken.None);
context.Forward(new MyChildDialog(), ResumeAfterChildDialog, message, CancellationToken.None);
这篇关于从对话框中调用表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文