55 lines
1.5 KiB
C#
55 lines
1.5 KiB
C#
using System.ComponentModel;
|
|||
|
|
using System.Drawing;
|
||
|
|
using System.Windows.Forms;
|
||
|
|
|
||
|
|
namespace Pulsar.Server.Controls
|
||
|
|
{
|
||
|
|
public class MenuButton : Button
|
||
|
|
{
|
||
|
|
[DefaultValue(null)]
|
||
|
|
public ContextMenuStrip Menu { get; set; }
|
||
|
|
|
||
|
|
[DefaultValue(false)]
|
||
|
|
public bool ShowMenuUnderCursor { get; set; }
|
||
|
|
|
||
|
|
protected override void OnMouseDown(MouseEventArgs mevent)
|
||
|
|
{
|
||
|
|
base.OnMouseDown(mevent);
|
||
|
|
|
||
|
|
if (Menu != null && mevent.Button == MouseButtons.Left)
|
||
|
|
{
|
||
|
|
Point menuLocation;
|
||
|
|
|
||
|
|
if (ShowMenuUnderCursor)
|
||
|
|
{
|
||
|
|
menuLocation = mevent.Location;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
menuLocation = new Point(0, Height - 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
Menu.Show(this, menuLocation);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
protected override void OnPaint(PaintEventArgs pevent)
|
||
|
|
{
|
||
|
|
base.OnPaint(pevent);
|
||
|
|
|
||
|
|
if (Menu != null)
|
||
|
|
{
|
||
|
|
int arrowX = ClientRectangle.Width - Padding.Right - 14;
|
||
|
|
int arrowY = (ClientRectangle.Height / 2) - 1;
|
||
|
|
|
||
|
|
Color color = Color.White;
|
||
|
|
using (Brush brush = new SolidBrush(color))
|
||
|
|
{
|
||
|
|
Point[] arrows = new Point[] { new Point(arrowX, arrowY), new Point(arrowX + 7, arrowY), new Point(arrowX + 3, arrowY + 4) };
|
||
|
|
pevent.Graphics.FillPolygon(brush, arrows);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|