分享如何用C#Button实现下拉菜单

本文为你讲解了C# Button下拉菜单实现的思路,步骤及代码!笔者讲述的很清楚,很有条理,实用性很强的。主要的思路还是在于要把ContextMenuStrip控件实例与按钮关联,并取消按钮的右击事件。

创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站制作、成都做网站、东港网络推广、重庆小程序开发、东港网络营销、东港企业策划、东港品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供东港建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

C# Button实现下拉菜单为实现这个功能, 花费的时间太长了, 觉得本人真够笨. 回过头来看, 其实很简单的东西!

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

实现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.  
  15.      public partial class DropButton : Button
  16.      {
  17.          private ContextMenuStrip contextMenuStrip;
  18.          private Point point;     //立标
  19.          private int x = 0;     //立标x
  20.          private int y = 0;     //立标y
  21.          private int workSize_x;//工做区x  
  22.          private int workSize_y;//工做区y
  23.          public DropButton()
  24.         {
  25.              InitializeComponent();
  26.             x = this.Size.Width ;
  27.              y = 0;
  28.          }
  29.          /// 
  30.          /// 工做区的完
  31.          ///
  32.  
  33.          public int WorkSizeX
  34.          {
  35.              get { return workSize_x; }
  36.              set { workSize_x = value; }
  37.          }
  38.          /// 
  39.          /// 工做区的高
  40.          ///
  41.  
  42.          public int WorkSizeY
  43.          {
  44.              get { return workSize_y; }
  45.              set { workSize_y = value - 55; }
  46.          }
  47.     ///
  48.           
  49.          /// ContextMenuStrip菜单
  50.          ///
  51.  
  52.          public override ContextMenuStrip ContextMenuStrip
  53.          {
  54.              get { return contextMenuStrip; }
  55.              set 
  56.              {
  57.                  if (contextMenuStrip != null)
  58.                  {
  59.                      contextMenuStrip = value;
  60.                  }
  61.              }
  62.         }  
  63.          //
  64.          //重写的单击事件
  65.          //
  66.          protected override void OnClick(EventArgs e)
  67.          {
  68.              base.OnClick(e);
  69.              //菜单在工做区离边框的宽高
  70.              int _x = this.Parent.Location.X + this.Location.X +
     this.Size.Width + contextMenuStrip.Size.Width;
  71.              int _y = this.Parent.Location.Y + this.Location.Y  + 
    contextMenuStrip.Size.Height ;
  72.     if
  73.              (_x < WorkSizeX - 8)
  74.              {
  75.                  x = this.Size.Width;
  76.              }
  77.              else
  78.              {
  79.                  x = 0 - contextMenuStrip.Size.Width;
  80.              }
  81.     if
  82.              (_y < WorkSizeY)
  83.              {
  84.                  y = 0;
  85.              }
  86.              else
  87.              {
  88.                  y = 0 - contextMenuStrip.Size.Height + this.Size.Height;
  89.              }
  90.      point =
  91.             new Point(x, y);
  92.              contextMenuStrip.Show(this, point);
  93.          }
  94.          //
  95.          //使鼠标右键失效
  96.          //
  97.          protected override void OnMouseDown(MouseEventArgs mevent)
  98.         {
  99.             base.OnMouseDown(mevent);
  100.              if (mevent.Button.ToString() != "Right")
  101.              {
  102.             }
  103.          }
  104.      }

以上讲述了实现C# Button下拉菜单的思路、步骤及代码,希望能给大家带来帮助。

网站题目:分享如何用C#Button实现下拉菜单
网页地址:http://www.csdahua.cn/qtweb/news4/251504.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网