当前位置:网站首页>视觉系统设计实例halcon-winform-11.菜单折叠与展示
视觉系统设计实例halcon-winform-11.菜单折叠与展示
2022-07-30 01:03:00 【11eleven】
随着节点功能越来越多,我们的左侧菜单出现一页显示不下的情况,这时需要对菜单做下分组,然后可以分组显示与隐藏,如图。

已经出现了滚动条。
优化后效果图:

对菜单进行分组,并且点击分组时进行组内显示与隐藏,用到的控件有FlowLayoutPanel,Button,思路是将按钮分组循环加载到flowPanel中,同时加载时获取组内按钮进行加载,然后加组按钮与组内按钮集合进行绑定,添加组按钮点击事件实现 组内的显示与隐藏。代码如下:
Dictionary<int, List<Button>> groupButtons = new Dictionary<int, List<Button>>();
/// <summary>
/// 工具栏
/// </summary>
private async void LoadToolButtonAsync()
{
// 获取分组进行分组加载
var toolGroup = VisionTaskService.GetToolGroupData();
var toolNodes = await VisionTaskService.LoadNodeButtonAsync();
FlowPanelToolMenu.Controls.Clear();
foreach (var group in toolGroup) {
var currentNodes = toolNodes.Where(x => x.GroupType == group.Key).OrderBy(x => x.Id).ToList();
if (currentNodes.IsListNullOrEmpty() == false) {
if (currentNodes.Count > 1)
{
Button button = new Button();
button.FlatStyle = FlatStyle.Flat;
button.Text = group.Value;
button.Width = 160;
button.Tag = group.Key;
button.Height = 30;
button.ForeColor = Color.White;
button.BackColor = ColorTranslator.FromHtml("#2775b6");
button.Click += ToolButton_Click;
FlowPanelToolMenu.Controls.Add(button);
List<Button> btns = new List<Button>();
currentNodes.ForEach(tool =>
{
var btn = LoadToolButton(tool);
btn.Visible=false;
btns.Add(btn);
});
groupButtons.Add(group.Key, btns);
}
else {
LoadToolButton(currentNodes.FirstOrDefault());
}
}
}
Button LoadToolButton(BasicToolNodeEntity tool){
Button button = new Button();
button.FlatStyle = FlatStyle.Flat;
button.Text = tool.Name;
button.Tag = tool;
button.Width = 150;
//button.AllowDrop = true;
button.MouseDown += ToolButton_MouseDown;
button.Height = 40;
button.ForeColor = Color.White;
button.BackColor = ColorTranslator.FromHtml("#7a7374");
//button.Click += ToolButton_Click;
button.ImageAlign = ContentAlignment.MiddleLeft;
button.Image = VisionTaskService.GetButtonImage(tool.Code);
FlowPanelToolMenu.Controls.Add(button);
return button;
}
ToolFlowNodeMenuDelete.Click += ToolFlowNodeMenuDelete_Click;
PanelNodeLog.AutoScroll = true;
SplitPreview.SplitterDistance = SplitPreview.Height - 230;
SplitPanelMain.SplitterWidth = 5;
SplitPreview.SplitterWidth = 5;
SplitPanelMain.SplitterDistance = 400;
this.CbxImageType.ValueMember = "Image";
CbxImageType.DisplayMember = "HImageTypeName";
CbxImageType.SelectedIndexChanged += CbxImageType_SelectedIndexChanged;
FlowPanelToolMenu.Padding = new Padding(20, 5, 0, 0);
}
private void ToolButton_Click(object sender, EventArgs e)
{
var btn = (Button)sender;
var gType = btn.Tag.ToInt();
if (groupButtons.ContainsKey(gType))
{
groupButtons[gType].ForEach(x =>
{
x.Visible = !x.Visible;
});
}
}
边栏推荐
- 2022-07-29:一共有n个人,从左到右排列,依次编号0~n-1, h[i]是第i个人的身高, v[i]是第i个人的分数, 要求从左到右选出一个子序列,在这个子序列中的人,从左到右身高是不下降的。
- Linux-安装MySQL(详细教程)
- string replace spaces
- 软考 --- 数据库(5)数据库控制
- 旋转数组的最小数字
- Print linked list from end to beginning
- LeetCode/Scala - without the firstborn of the string of characters, the longest text string back
- SSM整合案例
- Linux - install MySQL (detailed tutorial)
- Detailed introduction to the usage of Nacos configuration center
猜你喜欢

Fabric Writing Case Chaincode

Replace the executable file glibc version of the one

Self-study HarmonyOS application development (56) - Use Service to ensure that the application runs continuously in the background

泰克Tektronix示波器软件TDS2012|TDS2014|TDS2022上位机软件NS-Scope

Worthington Dissociation Enzymes: Collagenase and Four Basic Profiles
![[Training DAY16] ALFA [convex hull] [computational geometry]](/img/26/ecc77dabdf468b3a8ad3888b292496.png)
[Training DAY16] ALFA [convex hull] [computational geometry]

Validation Framework-01

Baidu Intelligent Cloud Zhangmiao: Detailed explanation of enterprise-level seven-layer load balancing open source software BFE

Worthington Papain & Chymotrypsin & DNase I

Linux - install MySQL (detailed tutorial)
随机推荐
Baidu Intelligent Cloud Zhangmiao: Detailed explanation of enterprise-level seven-layer load balancing open source software BFE
二维数组的查找
【LeetCode每日一题】——872.叶子相似的树
X64 mfc140u.dll文件缺失->应用程序无法正常启动(0xc000007b)解决方法
【Vmware NSX-V基本架构及组件安装】
Validation Framework-01
Since the media increase play a short video?From the three aspects
转发和重定向的区别及使用场景
QTableWidget usage example
基于SSM实现个性化健康饮食推荐系统
泰克Tektronix示波器软件TDS520|TDS1001|TDS1002上位机软件NS-Scope
He cell separation technology 丨 basic primary cell separation methods and materials
【经验】经验总结-经验教训
string replace spaces
Navicat for mysql破解版安装
[Experience] Experience Summary - Lessons Learned
如何在AWS里面的SQL server设置混合登陆
Running a Fabric Application
Worthington dissociating enzyme: detailed analysis of neutral protease (dispase)
SSM整合案例