C#笔记(18)MessageBox.Show自定义按钮文字
来源:互联网 发布:js生成二维码图片 编辑:程序博客网 时间:2024/06/09 13:52
public class MessageBoxEx { public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, string[] buttonTitles) { MessageForm frm = new MessageForm(buttons, buttonTitles); frm.WatchForActivate = true; DialogResult result = MessageBox.Show(frm, text, caption, buttons); frm.Close(); return result; } public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, string[] buttonTitles) { MessageForm frm = new MessageForm(buttons, buttonTitles); frm.Show(); frm.WatchForActivate = true; DialogResult result = MessageBox.Show(frm, text, caption, buttons, icon, defaultButton); frm.Close(); return result; } class MessageForm : Form { IntPtr _handle; MessageBoxButtons _buttons; string[] _buttonTitles = null; bool _watchForActivate = false; public bool WatchForActivate { get { return _watchForActivate; } set { _watchForActivate = value; } } public MessageForm(MessageBoxButtons buttons, string[] buttonTitles) { _buttons = buttons; _buttonTitles = buttonTitles; // Hide self form, and don't show self form in task bar. this.Text = ""; this.StartPosition = FormStartPosition.CenterScreen; this.Location = new Point(-32000, -32000); this.ShowInTaskbar = false; } protected override void OnShown(EventArgs e) { base.OnShown(e); // Hide self form, don't show self form even in task list. NativeWin32API.SetWindowPos(this.Handle, IntPtr.Zero, 0, 0, 0, 0, 659); } protected override void WndProc(ref System.Windows.Forms.Message m) { if (_watchForActivate && m.Msg == 0x0006) { _watchForActivate = false; _handle = m.LParam; CheckMsgbox(); } base.WndProc(ref m); } private void CheckMsgbox() { if (_buttonTitles == null || _buttonTitles.Length == 0) return; // Button title index int buttonTitleIndex = 0; // Get the handle of control in current window. IntPtr h = NativeWin32API.GetWindow(_handle, GW_CHILD); // Set those custom titles to the three buttons(Default title are: Yes, No and Cancle). while (h != IntPtr.Zero) { if (NativeWin32API.GetWindowClassName(h).Equals("Button")) { if (_buttonTitles.Length > buttonTitleIndex) { // Changes the text of the specified window's title bar (if it has one). // If the specified window is a control, the text of the control is changed. // However, SetWindowText cannot change the text of a control in another application. NativeWin32API.SetWindowText(h, _buttonTitles[buttonTitleIndex]); buttonTitleIndex++; } } // Get the handle of next control in current window. h = NativeWin32API.GetWindow(h, GW_HWNDNEXT); } } } public const int GW_CHILD = 5; public const int GW_HWNDNEXT = 2; public class NativeWin32API { [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int Width, int Height, int flags); [DllImport("user32.dll")] public static extern IntPtr GetWindow(IntPtr hWnd, Int32 wCmd); [DllImport("user32.dll")] public static extern bool SetWindowText(IntPtr hWnd, string lpString); [DllImport("user32.dll")] public static extern int GetClassNameW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount); public static string GetWindowClassName(IntPtr handle) { StringBuilder sb = new StringBuilder(256); // Retrieves the name of the class to which the specified window belongs GetClassNameW(handle, sb, sb.Capacity); return sb.ToString(); } } }
阅读全文
0 0
- C#笔记(18)MessageBox.Show自定义按钮文字
- c# messagebox .show()中如何换行
- MessageBox.Show--C#
- C# MessageBox.Show 用法
- C# MessageBox.Show 用法
- c# MessageBox.Show 用法
- C# MessageBox.Show
- C# MessageBox.Show
- c# messageBox.show()应用
- C#自定义MessageBox 按钮的Text
- 修改 messagebox 按钮文字
- c# MessageBox.Show()常用用法
- MessageBox.Show()函数
- C#中MessageBox.Show()实用方法
- C# Messagebox.show显示中文问题
- C#中MessageBox.Show的用法
- MessageBox.Show()
- 写 Ext.MessageBox.confirm 改变按钮文字
- 高精度
- 爬取京东手机商品信息
- Spring单例对象中引用非单例对象的方式:购物车问题的解决方案
- CTF-练习平台 WriteUp
- 深入理解JVM--java内存区域分析
- C#笔记(18)MessageBox.Show自定义按钮文字
- 剑指offer — 矩阵中的路径
- 1.python学习开始
- 论文阅读-LightGBM: A Highly Efficient Gradient Boosting Decision Tree
- 用Python写堡垒机项目
- 热键管理
- hbase使用外部(非自带)zookeeper搭建伪分布式环境
- MyEclipse 2017 CI9新功能及下载地址
- 项目管理4