效果

优点

  1. 模态对话框,原来的主窗口无法点击必须先响应消息提示窗口
  2. 不需要为 该消息窗口的实例添加按钮点击事件,响应消息窗口以后可以立刻返回用户点击了确定还是取消
  3. 调用该消息窗口的线程,必须等待用户响应了消息窗口才能继续执行下面的代码,和原生的MessageBox类一样
    缺点
  4. 需要新建实例再使用 不能像原生的MessageBox类直接利用MessageBox.show()使用

(下面通过点击按钮1 显示消息窗口来展示效果)
消息窗口出现前的效果

消息窗口出现后的效果

鼠标移动到消息窗口按钮的效果图


同时鼠标可以 自由移动消息窗口

用法

        private void button1_Click(object sender, EventArgs e2){using(MyMessageBox1 myMessageBox1 = new MyMessageBox1()){string hh = myMessageBox1.showMessage("我i说的话发生发撒");if(hh == "confirm"){Console.WriteLine("点击了确定");}else if(hh == "cancel"){Console.WriteLine("点击了取消或叉叉");}}}

源代码

命名空间

using System;
using System.Windows.Forms;
using System.Drawing;

消息窗口代码

public class MyMessageBox1: Form{#region 初始化按钮private void button_init(Button button){button.BackColor = Color.White;button.FlatStyle = FlatStyle.Flat;button.Font = new Font("微软雅黑", 10);button.FlatAppearance.BorderColor = Color.Black;button.FlatAppearance.MouseOverBackColor = Color.Black;button.FlatAppearance.MouseDownBackColor = Color.Black;button.MouseEnter += button_WinSignIn_SignIn_MouseEnter;button.MouseLeave += button_Lev;}private void button_WinSignIn_SignIn_MouseEnter(object sender, EventArgs e){Button button = (Button)sender;button.ForeColor = Color.White;}private void button_Lev(object sender, EventArgs e){Button button = (Button)sender;button.ForeColor = Color.Black;}#endregionButton[] buttons = new Button[2];Label[] labels = new Label[1];public MyMessageBox1(){this.Size = new Size(320, 200);this.BackColor = Color.White;this.ShowIcon = false;this.ShowInTaskbar = false;this.MaximizeBox = false;this.MinimizeBox = false;//this.ControlBox = false;this.StartPosition = FormStartPosition.CenterParent;this.FormBorderStyle = FormBorderStyle.FixedSingle;this.AutoSizeMode = AutoSizeMode.GrowAndShrink;labels[0] = new Label();labels[0].Text = "";labels[0].Anchor = AnchorStyles.None;labels[0].AutoSize = true;labels[0].Font = new Font("微软雅黑", 12);this.Controls.Add(labels[0]);buttons[0] = new Button();buttons[0].Text = "确定";button_init(buttons[0]);buttons[0].Font = new Font("微软雅黑", 10);buttons[0].Width = 150;buttons[0].Height = 50;buttons[0].Location = new Point(1, this.Height - 90);buttons[0].FlatAppearance.BorderColor = Color.White;buttons[0].Click += MyMessageBox1_Click1;buttons[0].Anchor = AnchorStyles.None;this.Controls.Add(buttons[0]);buttons[1] = new Button();buttons[1].Location = new Point(153, buttons[0].Location.Y);buttons[1].Text = "取消";button_init(buttons[1]);buttons[1].Font = new Font("微软雅黑", 10);buttons[1].Width = 150;buttons[1].Height = 50;buttons[1].FlatAppearance.BorderColor = Color.White;buttons[1].Click += MyMessageBox1_Click;buttons[1].Anchor = AnchorStyles.None;this.Controls.Add(buttons[1]);}//当点击右上角叉叉的时候默认返回cancelstring theClickButton = "cancel";private void MyMessageBox1_Click1(object sender, EventArgs e){theClickButton = "confirm";this.Close();}private void MyMessageBox1_Click(object sender, EventArgs e){theClickButton = "cancel";this.Close();}public string showMessage(string text){labels[0].Text = text;labels[0].Location = new Point(this.Width / 2 - labels[0].Width / 2-10, this.Height / 2 - labels[0].Height / 2-45);//ShowDialog相当于线程暂停 此处的话就需要close或者dispose以后才会 return theClickButton;this.ShowDialog();return theClickButton;}}

持续更新中…

C#自定义好看的消息提示窗口MessageBox相关推荐

  1. 2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口

     1 新建一个空项目 A 编写 .pro文件 QT += gui widgets HEADERS += \ MyDialog.h SOURCES += \ MyDialog.cpp B 编写MyD ...

  2. 扩展springmvc组件——当页面跳转时,需要在Controller里面创建一个空方法去跳转或者是创建一个配置类  ||日期格式化说明||自定义格式化器||消息转化器扩展fastjson

    在容器中注册视图控制器 当页面跳转时,我们需要在Controller里面创建一个空方法去跳转,那么有没有别的配置方法呢 创建一个WebMvcConfig的配置类   实现WebMvcConfigure ...

  3. c#在线程中打开类似msn的消息提示窗口

    // 启动线程    private void button2_Click(object sender, System.EventArgs e)    {     Thread receivex = ...

  4. 用VC++制作MSN、QQ 的消息提示窗口

    用VC++制作MSN.QQ 的消息提示窗口 用过QQ和MSN聊天工具的人都知道,只要好友上线,就会在托盘的位置处显示一个提示窗口,以是拉帘式的,或者是淡入淡出的形式出现:想想何不为自己的程式也加一个漂 ...

  5. Mac电脑的锁屏界面如何自定义锁屏消息?

    Mac锁屏消息是一种非常实用的功能,您可以设置自定义消息,使其显示在Mac的锁定屏幕上,可以放上任何你觉得有用或者有趣的消息,例如如果您放上个人的联系信息,在放错Mac或丢失Mac的时候,会非常有用, ...

  6. WPF自定义控件与样式(13)-自定义窗体Window 自适应内容大小消息框MessageBox

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 自定义 ...

  7. 【转】WPF自定义控件与样式(13)-自定义窗体Window 自适应内容大小消息框MessageBox...

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要内容: 自定义Window窗体样式: 基于自定义窗体实现自定义MessageB ...

  8. rocketmq 消息 自定义_RocketMQ的消息发送及消费

    RocketMQ消息支持的模式: 消息支持的模式分为三种:NormalProducer(普通同步),消息异步发送,OneWay. 消息同步发送: 普通消息的发送和接收在前面已经演示过了,在前面的案例中 ...

  9. android自定义队列,Android 消息机制(一)消息队列的创建与循环的开始 Looper与MessageQueue...

    写在前面 本文基于Android 7.1.1 (API 25)的源码分析编写 与之前的触摸事件分发机制分析的文章一样,Android系统机制的分析中关键的一环就是事件消息的处理.之前也说过,Andro ...

最新文章

  1. findfirst findnext 递归查找指定目录下所有子目录下所有文件,为什么总是死机?...
  2. 我用的 cordova 插件
  3. c语言程序中的错误可分为,《C语言程序设计(本)》模拟试卷1.doc
  4. java tcp 编程实例_Java实现基于TCP的通讯程序实例解析
  5. ASP.NET Core 3.x控制IHostedService启动顺序浅探
  6. 启动之后自己关闭_如何关闭Mac开机总是要输入密码?
  7. php+mysql将大数据sql文件导入数据库
  8. sqlite3源码调试
  9. 代表JAVA线程优先级的常量是_Java 线程优先级
  10. forcast iframe 及 四款播放器
  11. 网站被降权了怎么办?被降权后的正确处理方法
  12. 北京市工作居住证官方网站js报错不能使用解决办法
  13. Linq的Distinct方法
  14. Perfect Tree(图论)
  15. Android 耳机驱动知识
  16. Adb 抓不住Genymotion的解决方法
  17. 快客脚本引流工作室:每天用脚本快速引流几千上万到底是啥回事。
  18. 花瓣搜索编辑网站的方法
  19. 高精度加法(C++基础算法)
  20. python怎么写rpg游戏_python实现的简单RPG游戏流程实例

热门文章

  1. 经典图书介绍:广义相对论--从A到B
  2. pythonstdin_详解Python 中sys.stdin.readline()的用法
  3. oCPC和oCPM的本质区别是什么?
  4. CadenceAllegro16.6绘图软件使用一
  5. 用户行为分析——AARRR 模型 和RARRA模型
  6. 重装win10遇到的坑
  7. 51单片机串口通信(自动发送)
  8. Share Your Music - HTML5 Music Web App
  9. Guitar Pro8吉他打谱下载自学制作教程
  10. 安泰电子科普:电压源和电流源的区别是什么意思