C3032
2026-03-23 68a4b459eeb18effb8b3096add3d88c15629ab69
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
using System.Drawing;
using System.Xml.Linq;
using static System.Net.Mime.MediaTypeNames;
using static System.Windows.Forms.AxHost;
 
namespace LB_VisionControl
{
    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;
                }
            }
        }
    }
}