用WPF如何实现QQ开始菜单,即点一下按钮弹出一个菜单?
用WPF如何实现QQ开始菜单,即点一下按钮弹出一个菜单? --------------------编程问答-------------------- splitbuttonhttp://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#