2022/08/16(Tue) 21:58:31 編集(投稿者)
返信ありがとうございます。
■No100458 (ぶなっぷ さん) に返信
> たぶん、みなさん、以下の意味が分からないと思われ。
>>※言い換えれば、FrameのPageをShowDialogで出したい、みたいな感じです。
>
> もう少し、分かりやすく解説お願いいたします。
>
以下のようなことがしたいのです。
Uri uri = new Uri("/Page010_SortieMenu.xaml", UriKind.Relative);
using (Frame dlg = new Frame(uri))
{
if (dlg.ShowDialog() == DialogResult.OK)
{
//OKがクリックされた場合
MessageBox.Show("aaa");
} else
{
//キャンセルがクリックされた場合
MessageBox.Show("キャンセルされました。");
}
}
URLでの情報提供ありがとうございます。
例を参考に記述したところ、画面は停止するものの、
クリックを促す画面が表示されず、またクリックそのものも出来ない状態となりました……
以下にコードを記しますので、何か不足の点がありましたら、お教えください。
private readonly CountdownEvent condition = new CountdownEvent(1);
private void Button_click(object sender, EventArgs e)
{
DoWork()
//停止してここから先進まない
MessageBox.Show("aaa");
}
private async void DoWork()
{
Uri uri = new Uri("/Page010_SortieMenu.xaml", UriKind.Relative);
//以下が画面に表示されず
await Task.Run(() =>
{
Application.Current.Dispatcher.Invoke((Action)(() =>
{
Frame frame = new Frame();
frame.Source = uri;
frame.Margin = new Thickness(0, 0, 0, 0);
this.canvasMain.Children.Add(frame);
}));
});
//アプリケーション全体が止まり、マウスを動かすことは出来るが、クリック出来ない
condition.Wait();
}
private void Button_RightKeyDown(object sender, EventArgs e)
{
//wait後、クリック出来ないので意味がない
condition.Signal();
Thread.Sleep(1);
condition.Reset();
}