private static void td_timer(object obj) { MBox mbox = obj as MBox; Button btn = null; string btnOriginStr = ""; mbox.Dispatcher.Invoke(new Action(delegate { if (mbox.grid_ret1.Visibility == Visibility.Visible) { btn = mbox.btn_ret1_yes; } else if (mbox.grid_ret2.Visibility == Visibility.Visible) { btn = mbox.btn_ret2_yes; } else if (mbox.grid_ret3.Visibility == Visibility.Visible) { btn = mbox.btn_ret3_yes; } btnOriginStr = btn.Content.ToString(); })); while (mbox._limitSec > 0) { mbox.Dispatcher.Invoke(new Action(delegate { if (mbox.IsActive) { btn.Content = btnOriginStr + "(" + mbox._limitSec.ToString() + ")"; } })); System.Threading.Thread.Sleep(1000); --mbox._limitSec; } mbox.Dispatcher.Invoke(new Action(delegate { if (mbox.IsActive) { MBox._result = MBoxResult.Yes; mbox.Close(); } })); }
private void btn_ret3_cancel_Click(object sender, RoutedEventArgs e) { _result = MBoxResult.Cancel; Close(); }
private void btn_ret3_no_Click(object sender, RoutedEventArgs e) { _result = MBoxResult.No; Close(); }
private void btn_ret2_yes_Click(object sender, RoutedEventArgs e) { _result = MBoxResult.Yes; Close(); }
static private MBoxResult doShow(string title, Run[] contents, string[] operators, MBoxType type, int limitSec) { MBoxResult ret = MBoxResult.Yes; List <ContentDescription> lsContents = new List <ContentDescription>(); foreach (var run in contents) { ContentDescription cd = new ContentDescription(run); lsContents.Add(cd); } Application.Current.Dispatcher.Invoke(new Action(delegate { MBox mbox = new MBox(); mbox.setType(mbox, type); mbox.tbk_content.Text = ""; mbox.tbk_head.Text = ""; if (title == null || contents == null || operators == null) { mbox.ShowDialog(); } if (operators.Length == 1) { mbox.grid_ret2.Visibility = mbox.grid_ret3.Visibility = Visibility.Hidden; mbox.grid_ret1.Visibility = Visibility.Visible; mbox.btn_ret1_yes.Content = operators[0]; } else if (operators.Length == 2) { mbox.grid_ret1.Visibility = mbox.grid_ret3.Visibility = Visibility.Hidden; mbox.grid_ret2.Visibility = Visibility.Visible; mbox.btn_ret2_yes.Content = operators[0]; mbox.btn_ret2_no.Content = operators[1]; } else if (operators.Length == 3) { mbox.grid_ret1.Visibility = mbox.grid_ret2.Visibility = Visibility.Hidden; mbox.grid_ret3.Visibility = Visibility.Visible; mbox.btn_ret3_yes.Content = operators[0]; mbox.btn_ret3_no.Content = operators[1]; mbox.btn_ret3_cancel.Content = operators[2]; } mbox.tbk_head.Text = title; foreach (var r in lsContents) { mbox.tbk_content.Inlines.Add(r.convertToRun()); } if (limitSec > 0) { mbox._limitSec = limitSec; WaitCallback workItem = new WaitCallback(td_timer); ThreadPool.QueueUserWorkItem(workItem, mbox); } mbox.ShowDialog(); ret = _result; })); return(ret); }