Files
PulsarK-main/Pulsar.Server/Controls/MenuButton.cs
T

55 lines
1.5 KiB
C#
Raw Normal View History

2026-08-27 10:57:58 -06:00
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);
}
}
}
}
}