78 lines
2.4 KiB
C#
78 lines
2.4 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace 口罩泄露测试仪控制系统_定制款.窗体
|
|
{
|
|
public partial class TreeComboBox : UserControl
|
|
{
|
|
public TreeComboBox()
|
|
{
|
|
InitializeComponent();
|
|
comboBox.DropDown += ComboBox_DropDown;
|
|
treeView.NodeMouseClick += TreeView_NodeMouseClick;
|
|
treeView.Visible = false; // 初始化时隐藏 treeView
|
|
}
|
|
|
|
private void ComboBox_DropDown(object sender, EventArgs e)
|
|
{
|
|
// 设置 treeView 的位置和宽度
|
|
treeView.Location = new Point(comboBox.Left, comboBox.Bottom);
|
|
treeView.Width = comboBox.Width; // 与 comboBox 宽度一致
|
|
|
|
// 根据节点数量动态调整高度,最多显示 5 个节点
|
|
treeView.Height = Math.Min(treeView.Nodes.Count * 20, 100); // 每个节点 20 像素,最大高度 100
|
|
|
|
treeView.Visible = true;
|
|
treeView.BringToFront();
|
|
}
|
|
|
|
private void TreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
|
|
{
|
|
comboBox.Text = e.Node.Text;
|
|
treeView.Visible = false; // 选择后隐藏 treeView
|
|
}
|
|
|
|
// 公共方法,用于添加节点
|
|
public void AddNode(string name)
|
|
{
|
|
treeView.Nodes.Add(name);
|
|
}
|
|
|
|
// 公共方法,用于移除选中的节点
|
|
public void RemoveSelectedNode()
|
|
{
|
|
if (treeView.SelectedNode != null)
|
|
{
|
|
treeView.Nodes.Remove(treeView.SelectedNode);
|
|
}
|
|
}
|
|
|
|
// 公共属性,提供对 treeView 的访问
|
|
public TreeView TreeViewControl => treeView;
|
|
|
|
// 公共属性,提供对 comboBox 的访问
|
|
public ComboBox ComboBoxControl => comboBox;
|
|
|
|
private void btnAdd_Click(object sender, EventArgs e)
|
|
{
|
|
using (var inputBox = new InputBoxForm("新增项", "请输入新项名称:"))
|
|
{
|
|
if (inputBox.ShowDialog() == DialogResult.OK)
|
|
{
|
|
string newItem = inputBox.InputText;
|
|
if (!string.IsNullOrEmpty(newItem))
|
|
{
|
|
AddNode(newItem);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnRemove_Click(object sender, EventArgs e)
|
|
{
|
|
RemoveSelectedNode();
|
|
}
|
|
}
|
|
}
|