zoukankan      html  css  js  c++  java
  • C#自定义无边框MessageBox窗体

    C#自定义无边框MessageBox窗体

    本例子中制作一个无边框的MessageBox窗体

    展示效果:

    窗体设计

    1.添加一个窗体继承原生Form

    public partial class MessageBoxEX : Form

    2.属性添加

     1         private string _titleText = "提示";
     2 
     3         public string TitleText
     4         {
     5             get { return _titleText; }
     6             set { _titleText = value; }
     7         }
     8 
     9 
    10         private string _contentText = "暂无信息!";
    11 
    12         public string ContentText
    13         {
    14             get { return _contentText; }
    15             set { _contentText = value; }
    16         }

    3.事件添加

     1  /// <summary>
     2         /// 窗体load的时候讲文本赋值给消息框
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void MessageBoxEX_Load(object sender, EventArgs e)
     7         {
     8             if (this._contentText.Trim() != "")
     9             {
    10                 this.lblTitalContent.Text = this._titleText;
    11                 this.lblMessage.Text = this._contentText;
    12             }
    13         }
    14         /// <summary>
    15         /// 鼠标按下标题栏移动窗体
    16         /// </summary>
    17         /// <param name="sender"></param>
    18         /// <param name="e"></param>
    19         private void lblTitleBar_MouseDown(object sender, MouseEventArgs e)
    20         {
    21             //为当前的应用程序释放鼠标捕获
    22             ReleaseCapture();
    23             //发送消息﹐让系統误以为在标题栏上按下鼠标
    24             SendMessage((int)this.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    25         }
    26 
    27         /// <summary>
    28         /// 关闭按钮
    29         /// </summary>
    30         /// <param name="sender"></param>
    31         /// <param name="e"></param>
    32         private void btnClose_Click(object sender, EventArgs e)
    33         {
    34             this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
    35         }
    36 
    37         /// <summary>
    38         /// 确定按钮事件
    39         /// </summary>
    40         /// <param name="sender"></param>
    41         /// <param name="e"></param>
    42         private void btnOK_Click(object sender, EventArgs e)
    43         {
    44             this.DialogResult = System.Windows.Forms.DialogResult.OK;
    45         }
    46 
    47         /// <summary>
    48         /// 取消按钮
    49         /// </summary>
    50         /// <param name="sender"></param>
    51         /// <param name="e"></param>
    52         private void btnCancel_Click(object sender, EventArgs e)
    53         {
    54             this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
    55         }

    4.对外公共方法show设计 这里只填写俩个(有需要可以自行修改)

     1 public static DialogResult Show(string text)
     2         {
     3             MessageBoxEX msgbox = new MessageBoxEX(text);
     4             return msgbox.ShowDialog();
     5         }
     6 
     7         public static DialogResult Show(string title,string text)
     8         {
     9             MessageBoxEX msgbox = new MessageBoxEX(title,text);
    10             return msgbox.ShowDialog();
    11         }

    5.添加单击窗体标题栏移动窗体

    1        [DllImport("user32.dll", EntryPoint = "SendMessageA")]
    2         private static extern int SendMessage(int hwnd, int wMsg, int wParam, int lParam);
    3 
    4         [DllImport("user32.dll")]
    5         private static extern int ReleaseCapture();
    6 
    7         private const int WM_NCLBUTTONDOWN = 0XA1;   //.定义鼠標左鍵按下
    8         private const int HTCAPTION = 2;
    1         private void lblTitleBar_MouseDown(object sender, MouseEventArgs e)
    2         {
    3             //为当前的应用程序释放鼠标捕获
    4             ReleaseCapture();
    5             //发送消息﹐让系統误以为在标题栏上按下鼠标
    6             SendMessage((int)this.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    7         }

    效果展示:

     

    工程源程序下载 

  • 相关阅读:
    .NET的委托和匿名函数应用一例
    C#中,变量前的@符号
    ExtJs中多个form情况下指定某个form使能
    【Python web 开发】个人中心-用户收藏功能
    【Python web 开发】用户个人信息修改
    【Python web 开发】django rest framwork 动态设置serializers
    【Python web 开发】django rest framwork动态设置权限premission
    【fiddler】用fiddler 拦截请求修改response 回包测试
    【Python web 开发】联合唯一索引
    【Python web 开发】用户收藏功能
  • 原文地址:https://www.cnblogs.com/JiYF/p/8686420.html
Copyright © 2011-2022 走看看