当前位置:编程学习 > C#/ASP.NET >>

用WPF如何实现QQ开始菜单,即点一下按钮弹出一个菜单?

用WPF如何实现QQ开始菜单,即点一下按钮弹出一个菜单? --------------------编程问答-------------------- splitbutton
http://anothersplitbutton.codeplex.com/
http://www.codeproject.com/KB/WPF/ribboncontrol.aspx --------------------编程问答-------------------- 不清楚LZ所说的菜单是个什么样子,WPF里做弹出菜单主要用Popup。 --------------------编程问答-------------------- 好像可以改变形状吧!! --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 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下拉菜单的思路、步骤及代码,希望能给大家带来帮助。
--------------------编程问答-------------------- 在winform里面的菜单MenuStrip可以直接调整显示方向,如水平方向、垂直方向。
但wpf里面的菜单(menu)我确实没有找到可以调整方向的属性。
--------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,