C#中怎么利用Button實現(xiàn)一個下拉菜單

C#中怎么利用Button實現(xiàn)一個下拉菜單,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

建鄴網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。

在項目中,要用到按鈕實現(xiàn)下拉菜單的功能,而且是在MDI窗體中。當(dāng)菜單的顯示范疇超出MDI窗體的工做區(qū)時,就要換另一顯示方式,不至于顯示混亂。如圖:

C#中怎么利用Button實現(xiàn)一個下拉菜單
實現(xiàn)C# Button下拉菜單

C#中怎么利用Button實現(xiàn)一個下拉菜單
實現(xiàn)C# Button下拉菜單

(發(fā)覺一問題,如果把Form1拉到像Form3的大小,還會出現(xiàn)圖一的情況??蛻魶]這么邪吧)

C# Button下拉菜單實現(xiàn)思路:

1、要把ContextMenuStrip控件實例與按鈕關(guān)聯(lián)

2、取得MDI工做區(qū)的大小

3、取消按鈕的右擊事件(因為與ContextMenuStrip相關(guān)系的控件右鍵都會響應(yīng)且顯示)

4、鼠標(biāo)單擊時設(shè)置菜單顯示位置

C# Button下拉菜單實現(xiàn)步驟:

1、創(chuàng)建用戶控件,且用戶控件承繼自Button類

2、定義ContextMenuStrip對象

3、定義顯示ContextMenuStrip對象立標(biāo)point

4、重寫按鈕單擊事件和ContextMenuStrip屬性(設(shè)置與之關(guān)聯(lián)的ContextMenuStrip實例用到),還有重寫鼠標(biāo)右擊事件,使其不響應(yīng)任何操做

C# Button下拉菜單代碼:

  1.    /// 

     

  2.        /// 說明: 使用此Button時要設(shè)置ContextMenuStrip屬性值 

  3.       ///       單擊些Button的Click事件要傳入所在工做區(qū)的寬高 

  4.        ///       如果沒有所需的屬性值,則如平時所使用的Button一至 

  5.        /// 使用例子: 

  6.       ///       DropButton.WorkSizeX = 
    this.MdiParent.ClientRectangle.Width; 

  7.        ///       DropButton.WorkSizeY = 
    this.MdiParent.ClientRectangle.Height; 

  8.        /// 應(yīng)用: 

  9.       /// 創(chuàng)建人: lrj 

  10.     /// 創(chuàng)建日期:2008-05-22 

  11.      /// 修改人: 

  12.      /// 修改日期: 

  13.      ///  

  14.      public partial class DropButton : Button  

  15.      {  

  16.          private ContextMenuStrip contextMenuStrip;  

  17.          private Point point;     //立標(biāo) 

  18.          private int x = 0;     //立標(biāo)x 

  19.          private int y = 0;     //立標(biāo)y 

  20.          private int workSize_x;//工做區(qū)x   

  21.          private int workSize_y;//工做區(qū)y 

  22.          public DropButton()  

  23.         {  

  24.              InitializeComponent();  

  25.             x = this.Size.Width ;  

  26.              y = 0;  

  27.          }  

  28.          /// 

     

  29.          /// 工做區(qū)的完 

  30.          ///  

  31.          public int WorkSizeX  

  32.          {  

  33.              get { return workSize_x; }  

  34.              set { workSize_x = value; }  

  35.          }  

  36.          /// 

     

  37.          /// 工做區(qū)的高 

  38.          ///  

  39.          public int WorkSizeY  

  40.          {  

  41.              get { return workSize_y; }  

  42.              set { workSize_y = value - 55; }  

  43.          }  

  44.           ///

  45.           

     

  46.          /// ContextMenuStrip菜單 

  47.          ///  

  48.          public override ContextMenuStrip ContextMenuStrip  

  49.          {  

  50.              get { return contextMenuStrip; }  

  51.              set   

  52.              {  

  53.                  if (contextMenuStrip != null)  

  54.                  {  

  55.                      contextMenuStrip = value;  

  56.                  }  

  57.              }  

  58.         }   

  59.          // 

  60.          //重寫的單擊事件 

  61.          // 

  62.          protected override void OnClick(EventArgs e)  

  63.          {  

  64.              base.OnClick(e);  

  65.              //菜單在工做區(qū)離邊框的寬高 

  66.              int _x = this.Parent.Location.X + this.Location.X +
    this.Size.Width + contextMenuStrip.Size.Width;  

  67.              int _y = this.Parent.Location.Y + this.Location.Y  + 
    contextMenuStrip.Size.Height ;  

  68.              if

  69.              (_x < WorkSizeX - 8)  

  70.              {  

  71.                  x = this.Size.Width;  

  72.              }  

  73.              else 

  74.              {  

  75.                  x = 0 - contextMenuStrip.Size.Width;  

  76.              }  

  77.              if 

  78.              (_y < WorkSizeY)  

  79.              {  

  80.                  y = 0;  

  81.              }  

  82.              else 

  83.              {  

  84.                  y = 0 - contextMenuStrip.Size.Height + this.Size.Height;  

  85.              }  

  86.               point =

  87.             new Point(x, y);  

  88.              contextMenuStrip.Show(this, point);  

  89.          }  

  90.          // 

  91.          //使鼠標(biāo)右鍵失效 

  92.          // 

  93.          protected override void OnMouseDown(MouseEventArgs mevent)  

  94.         {  

  95.             base.OnMouseDown(mevent);  

  96.              if (mevent.Button.ToString() != "Right")  

  97.              {  

  98.             }  

  99.          }  

  100.      } 

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

分享題目:C#中怎么利用Button實現(xiàn)一個下拉菜單
分享鏈接:http://muchs.cn/article40/ishcho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)服務(wù)器托管、外貿(mào)建站、、商城網(wǎng)站、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)