C# “我的代码未在中运行”;顺序;

C# “我的代码未在中运行”;顺序;,c#,windows-phone,C#,Windows Phone,我在我的项目中使用API(Coding4Fun.Toolkit)来显示包含文本框的messageBox。因此,当我调用MessagePromptcode时,它没有在正确的时间运行 private void holdListAdd(object sender, System.Windows.Input.GestureEventArgs) { var dc = ((FrameworkElement)sender).DataContext; Fields fi = (Fields)dc

我在我的项目中使用API(
Coding4Fun.Toolkit
)来显示包含文本框的messageBox。因此,当我调用
MessagePrompt
code时,它没有在正确的时间运行

private void holdListAdd(object sender, System.Windows.Input.GestureEventArgs)
{
    var dc = ((FrameworkElement)sender).DataContext;
    Fields fi = (Fields)dc;

    if (List2.Items.Contains(fi))
    {
        MessageBox.Show("Esse item já foi adicionado!");
    }
    else
    {
        MessagePrompt messagePrompt = new MessagePrompt();

        messagePrompt.Body = new BodyUserControl();
        messagePrompt.Show();

        IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
        if (iso.TryGetValue<string>("isoQuantity", out retornaNome))
        {
            qtd = retornaNome;
        }
        fi.Quantity = qtd;

        List2.Items.Add(fi);
        MessageBox.Show("Item Adicionado com sucesso!");
    }
BodyUserControl.cs:

public partial class BodyUserControl : PhoneApplicationPage
{
    public BodyUserControl()
    {
        InitializeComponent();
    }

    private void addQuantity_Click(object sender, RoutedEventArgs e)
    {
        IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
        {
            if (iso.Contains("isoQuantity"))
            {
                iso["isoQuantity"] = Quantity.Text;
            }
            else
            {
                iso.Add("isoQuantity", Quantity.Text);
            }
        }
    }

这是因为当显示
MessagePrompt
时,代码仍在继续。如果要在
MessagePrompt
完成后执行某些操作,则必须将事件处理程序分配到
MessagePrompt.completed
。差不多

messagePrompt.Completed += messagePrompt_Completed;
messagePrompt.Show();

void messagePrompt_Completed(object sender, PopUpEventArgs<object, PopUpResult> e)
{
    IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
    if (iso.TryGetValue<string>("isoQuantity", out retornaNome))
    {
        qtd = retornaNome;
    }
    fi.Quantity = qtd;

    List2.Items.Add(fi);
    MessageBox.Show("Item Adicionado com sucesso!");
};
messagePrompt.Completed+=messagePrompt\u Completed;
messagePrompt.Show();
void messagePrompt_已完成(对象发送方,PopUpEventArgs e)
{
隔离存储设置iso=隔离存储设置。应用设置;
if(iso.TryGetValue(“isoQuantity”,out-nanome))
{
qtd=纳米组;
}
fi.数量=qtd;
清单2.项目。添加(fi);
Show(“项目Adicionado com successo!”);
};

您能解释一下“之前运行”吗?您面临的问题是什么?我需要从
ListBox1
添加一个产品到
ListBox2
MessagePrompt
应请求项目数量。我的问题是:项目是在请求数量之前添加的。ans是正确的,请使用这种方式。我按照您的建议做了,但此问题显示:“messagePrompt\u Completed”与“delegate”系统没有重载。EventHandler“请使用新代码更新问题。”。很难说是哪里出了问题。顺便说一句,我说:像。。。如果没有进一步的修改,我的代码将无法工作。尤其是
fi.Quantity
是有问题的,因为
fi
不在事件处理程序的范围内声明。但我想你可以自己解决。
messagePrompt.Completed += messagePrompt_Completed;
messagePrompt.Show();

void messagePrompt_Completed(object sender, PopUpEventArgs<object, PopUpResult> e)
{
    IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
    if (iso.TryGetValue<string>("isoQuantity", out retornaNome))
    {
        qtd = retornaNome;
    }
    fi.Quantity = qtd;

    List2.Items.Add(fi);
    MessageBox.Show("Item Adicionado com sucesso!");
};