using System.Drawing;
|
using System.Xml.Linq;
|
using static System.Net.Mime.MediaTypeNames;
|
using static System.Windows.Forms.AxHost;
|
|
namespace LB_VisionControls
|
{
|
public enum State { None, Pass, Error, Warn };
|
|
public partial class UserItem : PictureBox
|
{
|
// 定义一个委托和事件
|
public delegate void MenuItem1ClickedHandler(string name, string text);
|
public event MenuItem1ClickedHandler MenuItem1ClickedEvent;
|
|
// 定义一个委托和事件
|
public delegate void MenuItem2ClickedHandler(string name, string text);
|
public event MenuItem2ClickedHandler MenuItem2ClickedEvent;
|
|
// 定义一个委托和事件
|
public delegate void MenuItem3ClickedHandler(string name, string text);
|
public event MenuItem3ClickedHandler MenuItem3ClickedEvent;
|
|
// 定义一个委托和事件
|
public delegate void MenuItem4ClickedHandler(string name, string text);
|
public event MenuItem4ClickedHandler MenuItem4ClickedEvent;
|
|
// 定义一个委托和事件
|
public delegate void MenuItem5ClickedHandler(string name, string text);
|
public event MenuItem5ClickedHandler MenuItem5ClickedEvent;
|
|
// 定义一个委托和事件
|
public delegate void MenuItem6ClickedHandler(string name, string text);
|
public event MenuItem6ClickedHandler MenuItem6ClickedEvent;
|
|
public State state = State.None;
|
|
public UserItem()
|
{
|
InitializeComponent();
|
}
|
|
public UserItem(string[] arrMenuItems)
|
{
|
InitializeComponent();
|
if (arrMenuItems.Length <= 0)
|
return;
|
|
uiContextMenuStrip1.Items.Clear();
|
ToolStripItem[] toolStripItems = new ToolStripItem[arrMenuItems.Length];
|
for (int i = 0; i < arrMenuItems.Length; i++)
|
{
|
ToolStripMenuItem ToolStripMenuItem = new ToolStripMenuItem();
|
ToolStripMenuItem.Name = $"ToolStripMenuItem{i}";
|
ToolStripMenuItem.Size = new Size(180, 22);
|
ToolStripMenuItem.Text = arrMenuItems[i];
|
toolStripItems[i] = ToolStripMenuItem;
|
}
|
|
uiContextMenuStrip1.Items.AddRange(toolStripItems);
|
}
|
|
public void UserItem_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
|
{
|
// 绘制填充椭圆(使用坐标和大小参数)
|
// 绘制一个圆用于显示状态
|
switch (state)
|
{
|
case State.None:
|
e.Graphics.FillEllipse(Brushes.Black, 10, 10, 15, 15);
|
break;
|
case State.Pass:
|
e.Graphics.FillEllipse(Brushes.DarkGreen, 10, 10, 15, 15);
|
break;
|
case State.Error:
|
e.Graphics.FillEllipse(Brushes.MediumVioletRed, 10, 10, 15, 15);
|
break;
|
case State.Warn:
|
e.Graphics.FillEllipse(Brushes.Yellow, 10, 10, 15, 15);
|
break;
|
}
|
|
// 绘制背景矩形显示Name
|
RectangleF bgRect = new RectangleF(35, 0, Width, 40);
|
e.Graphics.FillRectangle(Brushes.AliceBlue, bgRect);
|
e.Graphics.DrawString(Name, Font, Brushes.Black, bgRect);
|
|
// 绘制背景矩形显示Text
|
RectangleF btRect = new RectangleF(10, 40, Width, Height - 40);
|
e.Graphics.FillRectangle(Brushes.AliceBlue, btRect);
|
e.Graphics.DrawString(Text, Font, Brushes.Black, btRect);
|
}
|
|
private void uiContextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
{
|
// 获取被点击的菜单项
|
ToolStripMenuItem clickedItem = e.ClickedItem as ToolStripMenuItem;
|
|
if (clickedItem != null)
|
{
|
// 根据被点击的菜单项执行不同的操作
|
switch (clickedItem.Name)
|
{
|
case "ToolStripMenuItem0":
|
// 执行菜单项0的逻辑
|
MenuItem1ClickedEvent?.Invoke(Name, Text);
|
break;
|
case "ToolStripMenuItem1":
|
// 执行菜单项1的逻辑
|
MenuItem2ClickedEvent?.Invoke(Name, Text);
|
break;
|
case "ToolStripMenuItem2":
|
// 执行菜单项2的逻辑
|
MenuItem3ClickedEvent?.Invoke(Name, Text);
|
break;
|
case "ToolStripMenuItem3":
|
// 执行菜单项3的逻辑
|
MenuItem4ClickedEvent?.Invoke(Name, Text);
|
break;
|
case "ToolStripMenuItem4":
|
// 执行菜单项4的逻辑
|
MenuItem5ClickedEvent?.Invoke(Name, Text);
|
break;
|
case "ToolStripMenuItem5":
|
// 执行菜单项5的逻辑
|
MenuItem6ClickedEvent?.Invoke(Name, Text);
|
break;
|
default:
|
// 执行其他操作
|
break;
|
}
|
}
|
}
|
}
|
}
|