视觉系统设计实例halcon-winform-11.菜单折叠与展示
来源:http://www.tudoupe.com时间:2022-07-29
随着越来越多的节点功能,我们的左手菜单似乎无法显示页面,当你需要分组菜单时,你可以分组显示和隐藏,例如图形。

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

对菜单进行分组,当单击组执行组显示和隐藏时,用到的控件有FlowLayoutPanel,Button,这个想法是将按钮组装循环载入流程面板中,同时加载, 让内部组按钮加载,然后添加组按钮和绑定组按钮设置,添加组按钮单击执行事件以显示和隐藏在组内。代码如下:
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-08-04 WPF的由来
- 2022-08-04 Win11勒索软件防护怎么打开?Win11安
- 2022-08-04 Windows系统jdk的配置
- 2022-08-04 Windows10 OneNote怎么重新登录?如何重
- 2022-08-04 超好用的 Windows 效率工具推荐
- 2022-08-04 Windows如何在CMD或PowerShell中配置代理
- 2022-08-04 powershell和cmd对比
- 2022-08-04 【QT】Windows下QT下载安装
- 2022-08-04 windows下 C++ 实现类属性的get和set方
- 2022-08-04 Win11快速助手在哪里?Win11打开快速
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
