123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- using FWindSoft.WindowsApi;
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Interop;
- using SysWindow = System.Windows.Window;
- namespace FWindSoft.Wpf
- {
- /*
- * 一点,窗体自然关闭时取消按钮
- * 如果有取消按钮,则窗体可有标题栏关闭,否则不能
- */
- public static class MessageTip
- {
- private const string DefaultCaption = "提示";
- public static MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button)
- {
- return (MessageBoxResult)Show(null, messageBoxText, caption, CreateButtons(button));
- }
- public static MessageBoxResult Show(string messageBoxText, string caption)
- {
- return (MessageBoxResult)Show(null, messageBoxText, caption, CreateButtons(MessageBoxButton.OK));
- }
- public static MessageBoxResult Show(string messageBoxText)
- {
- return (MessageBoxResult)Show(null, messageBoxText, DefaultCaption, CreateButtons(MessageBoxButton.OK));
- }
- public static MessageBoxResult Show(SysWindow owner, string messageBoxText, string caption, MessageBoxButton button)
- {
- return (MessageBoxResult)Show(owner, messageBoxText, caption, CreateButtons(button));
- }
- public static MessageBoxResult Show(SysWindow owner, string messageBoxText, string caption)
- { return (MessageBoxResult)Show(owner, messageBoxText, caption, CreateButtons(MessageBoxButton.OK));
- }
- public static MessageBoxResult Show(SysWindow owner, string messageBoxText)
- {
- string caption = DefaultCaption;
- if (owner != null && !string.IsNullOrEmpty(owner.Title))
- caption = owner.Title;
- return (MessageBoxResult)Show(owner, messageBoxText, caption, CreateButtons(MessageBoxButton.OK));
- }
- #region 核心显示方法
- /// <summary>
- ///
- /// </summary>
- /// <param name="owner"></param>
- /// <param name="messageBoxText"></param>
- /// <param name="caption"></param>
- /// <param name="buttonItems">如果flag,有2的话,则启用关闭按钮</param>
- /// <returns></returns>
- public static int Show(SysWindow owner, string messageBoxText, string caption, List<TipButtonItem> buttonItems)
- {
- if (buttonItems == null || !buttonItems.Any())
- return -1;
- WinMessageTip tip = new WinMessageTip(buttonItems);
-
- tip.Title = caption;
- if (owner != null)
- {
- tip.Owner = owner;
- }
- else
- {
- //设置主线程窗体为父窗体
- var handle = Process.GetCurrentProcess().MainWindowHandle;
- if (handle != IntPtr.Zero)
- {
- var winHelp = new WindowInteropHelper(tip);
- winHelp.EnsureHandle();
- winHelp.Owner = handle;
- //WinAPi.SetParent(winHelp.EnsureHandle(), handle);
- }
- }
- tip.Message = messageBoxText ?? string.Empty;
- if (buttonItems.Any(i => i.Flag == 2))
- {
- tip.DisableUseClose = false;
- }
- var result = tip.ShowDialog();
- if (result != null && result.Value == true)
- {
- return tip.Flag;
- }
- return 2;
- }
- #endregion
- private static List<TipButtonItem> CreateButtons(MessageBoxButton button)
- {
- List<TipButtonItem> items = new List<TipButtonItem>();
- switch (button)
- {
- case MessageBoxButton.OK:
- items.Add(new TipButtonItem() { Content = "确定", Flag = 1,IsDefault=true });
- break;
- case MessageBoxButton.OKCancel:
- items.Add(new TipButtonItem() { Content = "确定", Flag = 1, IsDefault = true });
- items.Add(new TipButtonItem() { Content = "取消", Flag = 2 , IsCancel = true });
- break;
- case MessageBoxButton.YesNoCancel:
- items.Add(new TipButtonItem() { Content = "是", Flag = 6, IsDefault = true });
- items.Add(new TipButtonItem() { Content = "否", Flag = 7 });
- items.Add(new TipButtonItem() { Content = "取消", Flag = 2, IsCancel = true });
- break;
- case MessageBoxButton.YesNo:
- items.Add(new TipButtonItem() { Content = "是", Flag = 6, IsDefault = true });
- items.Add(new TipButtonItem() { Content = "否", Flag = 7, IsCancel = true });
- break;
- default:
- break;
- }
- return items;
- }
- }
- }
|