成都网站建设设计

将想法与焦点和您一起共享

C#中怎么利用Button实现一个下拉菜单

C#中怎么利用Button实现一个下拉菜单,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

建邺网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。成都创新互联于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联

在项目中,要用到按钮实现下拉菜单的功能,而且是在MDI窗体中。当菜单的显示范畴超出MDI窗体的工做区时,就要换另一显示方式,不至于显示混乱。如图:

C#中怎么利用Button实现一个下拉菜单
实现C# Button下拉菜单

C#中怎么利用Button实现一个下拉菜单
实现C# Button下拉菜单

(发觉一问题,如果把Form1拉到像Form3的大小,还会出现图一的情况。客户没这么邪吧)

C# Button下拉菜单实现思路:

1、要把ContextMenuStrip控件实例与按钮关联

2、取得MDI工做区的大小

3、取消按钮的右击事件(因为与ContextMenuStrip相关系的控件右键都会响应且显示)

4、鼠标单击时设置菜单显示位置

C# Button下拉菜单实现步骤:

1、创建用户控件,且用户控件承继自Button类

2、定义ContextMenuStrip对象

3、定义显示ContextMenuStrip对象立标point

4、重写按钮单击事件和ContextMenuStrip属性(设置与之关联的ContextMenuStrip实例用到),还有重写鼠标右击事件,使其不响应任何操做

C# Button下拉菜单代码:

  1.    /// 

     

  2.        /// 说明: 使用此Button时要设置ContextMenuStrip属性值 

  3.       ///       单击些Button的Click事件要传入所在工做区的宽高 

  4.        ///       如果没有所需的属性值,则如平时所使用的Button一至 

  5.        /// 使用例子: 

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

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

  8.        /// 应用: 

  9.       /// 创建人: lrj 

  10.     /// 创建日期:2008-05-22 

  11.      /// 修改人: 

  12.      /// 修改日期: 

  13.      ///  

  14.      public partial class DropButton : Button  

  15.      {  

  16.          private ContextMenuStrip contextMenuStrip;  

  17.          private Point point;     //立标 

  18.          private int x = 0;     //立标x 

  19.          private int y = 0;     //立标y 

  20.          private int workSize_x;//工做区x   

  21.          private int workSize_y;//工做区y 

  22.          public DropButton()  

  23.         {  

  24.              InitializeComponent();  

  25.             x = this.Size.Width ;  

  26.              y = 0;  

  27.          }  

  28.          /// 

     

  29.          /// 工做区的完 

  30.          ///  

  31.          public int WorkSizeX  

  32.          {  

  33.              get { return workSize_x; }  

  34.              set { workSize_x = value; }  

  35.          }  

  36.          /// 

     

  37.          /// 工做区的高 

  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.              //菜单在工做区离边框的宽高 

  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.          //使鼠标右键失效 

  92.          // 

  93.          protected override void OnMouseDown(MouseEventArgs mevent)  

  94.         {  

  95.             base.OnMouseDown(mevent);  

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

  97.              {  

  98.             }  

  99.          }  

  100.      } 

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


本文标题:C#中怎么利用Button实现一个下拉菜单
转载源于:http://chengdu.cdxwcx.cn/article/ishcho.html