在我按下后退键的应用程序中,我收到消息框正常按预期显示消息框并且在后台应用程序正在运行,然后按ok / cancel app正常运行。
一旦有消息框,然后我再按一下键,消息框就会消失,如果我再按一下按键,它会再次返回,除非我选择确定/取消。
我无法执行上述功能,按下第二次返回按钮,消息框不会消失。
以下是代码:
protected override void OnBackKeyPress(CancelEventArgs e)
{
CustomMessageBox messageBox = new CustomMessageBox()
{
Caption = "Would you like to terminate the transfer?",
//Message = "",
LeftButtonContent = "Ok",
RightButtonContent = "Cancel"
};
messageBox.show();
messageBox.Dismissed += (s1, e1) =>
{
switch (e1.Result)
{
case CustomMessageBoxResult.LeftButton:
//exiting the current transfer happening
break;
case CustomMessageBoxResult.RightButton:
// do nothing here
break;
default:
break;
}
};
messageBox.show();
}
现在问题是每次返回键如下:
当前O / P:反复按下后退键,弹出消息框。
所需的O / P:如果我按回一次键,则会弹出消息框,如果我再次按下它应该会在不打扰后台传输的情况下关闭,除非您选择一个选项,否则应该一次又一次地按回来键来自留言箱。
请帮助我控制消息框显示。
答案 0 :(得分:5)
以下是一个例子:
protected override void OnBackKeyPress(CancelEventArgs e)
{
e.Cancel = true;
MessageBox.Show("C#");
}
基本实施:
bool OnOff = true;
protected override void OnBackKeyPress(CancelEventArgs e)
{
base.OnBackKeyPress(e);
e.Cancel = true;
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
if (this.OnOff)
{
CustomMessageBox message = new CustomMessageBox
{
Caption = "Would you like to terminate the transfer?",
LeftButtonContent = "Ok",
RightButtonContent = "Cancel"
};
message.Dismissed += (sender, args) =>
{
((CustomMessageBox)sender).Dismissing += (o, eventArgs) => eventArgs.Cancel = true;
if (args.Result == CustomMessageBoxResult.LeftButton)
{
// Code
}
else if (args.Result == CustomMessageBoxResult.RightButton)
{
// Code
}
};
message.Show();
this.OnOff = false;
}
else
this.OnOff = true;
});
}
您可以在此处找到更多信息:Using the CustomMessageBox in OnBackKeyPressed