程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> c#自定義消息框美化步聚

c#自定義消息框美化步聚

編輯:更多關於編程

       Windows自帶的消息框比較丑,特別是轉到WIN7下更加,項目中用到的消息框非常多,基本上有提示信息、錯誤信息、詢問信息這三種,從美觀角度,MessageBox.show()這個方法出來的消息框有點不盡人意,於是自己寫了一個,個人覺得舒服些。

      說明:以下命名忽略了大小寫。

      自定義信息框

    c#自定義消息框美化步聚 三聯

      系統信息框

      自定義詢問框

      系統詢問框

      步驟1:

      新建窗體frmMessageBox,放置一個picturebox(picICO)控件和一個label(labinfo)控件以及兩個panel控件,其中panel1裡面放一個按鈕,命名為btnOk,文text屬性為確定(&O),dialogresult屬性設置為ok,這樣的話結束對話框之後會返回dialogresult.ok,這裡為了能夠自適應消息長度而改變按鈕寬度和對話框寬度,特意要放置兩個panel,另外一個panel放置兩個按鈕,一個是,一個否。

      這樣的話相信你已經知道這些控件的用處了吧,圖片框用來顯示對應圖片,信息框的話就是一個大勾,詢問框的話就是一個大問號,提前將資源添加到項目中,建議圖片文件命名最好info.png/error.png這樣的,到時候取資源的話好找,label用來顯示消息。

      步驟2:

      定義枚舉類型,這裡定義了三種,你也可以自己增加。

      public enum MessageBoxStyle

      {

      info=0,

      question=1,

      error=2

      };

      步驟3:

      重寫構造函數

      public frmMessageBox(MessageBoxStyle messageBoxStyle,string msg)

      {

      InitializeComponent();

      if (messageBoxStyle == MessageBoxStyle.info)

      {

      picICO.Image = global::myAlarmSystem.Properties.Resources.info;

      this.Text = "提示";

      panel1.Visible = true;

      panel2.Visible = false;

      }

      else if (messageBoxStyle == MessageBoxStyle.question)

      {

      picICO.Image = global::myAlarmSystem.Properties.Resources.question;

      this.Text = "詢問";

      panel1.Visible = false;

      panel2.Visible = true;

      }

      else if (messageBoxStyle == MessageBoxStyle.error)

      {

      picICO.Image = global::myAlarmSystem.Properties.Resources.error;

      this.Text = "錯誤";

      panel1.Visible = true;

      panel2.Visible = false;

      }

      this.labInfo.Text = msg;

      SizeF size = TextRenderer.MeasureText(msg, new Font("宋體", 15, FontStyle.Regular));

      int TempWidth = (int)size.Width;

      if (TempWidth <= 249) { return; }

      this.Width = (int)size.Width + 130;

      this.panel1.Width = TempWidth-20;

      this.panel2.Width = TempWidth-20;

      btnYes.Width = TempWidth / 2 - 20;

      btnNo.Width = TempWidth / 2 - 20;

      }

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved