UI 控件与窗体
第八章:UI 控件与窗体
LoongCAD 在 LoongCAD.STC.Friendly.dll 中内置了大量 WinForms 控件,大致分为两类:
- 基础控件:直接拖到窗体上使用,如
SaveLoad、OkApplyModifyGetOnOffCancel、TabControl等,行为和标准 WinForms 控件一致 - 属性面板(
...Panel):用于自动绑定到参数数据类,通过声明public XxxPanel.Data xxx字段来驱动 UI 渲染。部分面板内嵌了Data嵌套类用于参数映射,并非所有控件都有此机制
8.1 螺栓基本属性 —— BoltBasicPropertyPanel
| 字段 | 类型 | 默认值示例 | 说明 |
|---|---|---|---|
BoltStandard |
string |
"HS10.9" |
螺栓标准等级 |
BoltSize |
double |
24.0 |
螺栓公称直径 (mm) |
HoleTol |
double |
2.0 |
孔径公差 = 栓径 + 此值 |
HoleX |
double |
— | X 方向长圆孔长度(0 = 圆孔) |
HoleY |
double |
— | Y 方向长圆孔长度(0 = 圆孔) |
HoleType |
int |
— | 孔类型:0=圆孔, 1=长圆孔 |
RotSlot |
int |
— | 长圆孔旋转角度 |
SlotIn |
int |
— | 长圆孔方向 |
ExtLength |
double |
— | 螺栓末端伸出螺母的长度 (mm) |
8.2 螺栓组成 —— BoltContentPanel
| 字段 | 类型 | 说明 |
|---|---|---|
WasherUp |
bool |
螺栓头上方是否加垫片 |
WasherDown0 |
bool |
第一层板下方垫片 |
WasherDown1 |
bool |
第二层板下方垫片 |
Nut0 |
bool |
第一层板下方螺母 |
Nut1 |
bool |
第二层板下方螺母 |
8.3 板件属性 —— PlatePropertyPanel
| 字段 | 类型 | 默认值示例 | 说明 |
|---|---|---|---|
Thickness |
double |
10 |
板厚 (mm) |
Width |
double |
— | 板宽度 |
Height |
double |
— | 板高度 |
Material |
string |
"Q235B" |
材质牌号 |
Name |
string |
"板" |
板件名称 |
NoPrefix |
string |
"B" |
零件编号前缀 |
NoStartFixed |
string |
— | 零件起始编号/后缀 |
AssemblyNoPrefix |
string |
— | 构件编号前缀 |
AssemblyNoStartFixed |
string |
— | 构件起始编号 |
Finish |
string |
— | 表面处理/抛光 |
Class |
string |
— | 等级 |
8.4 梁属性 —— BeamPropertyPanel
| 字段 | 类型 | 说明 |
|---|---|---|
Profile |
string |
截面型材字符串 |
Material |
string |
材质牌号 |
Name |
string |
构件名称 |
NoPrefix |
string |
零件编号前缀 |
NoStartFixed |
string |
零件起始编号/后缀 |
AssemblyNoPrefix |
string |
构件编号前缀 |
AssemblyNoStartFixed |
string |
构件起始编号 |
Finish |
string |
表面处理 |
Class |
string |
等级 |
此外 BeamPropertyPanel 提供多个 Enable*Controls 属性(EnableProfileControls、EnableMaterialControls、EnableNumberControls 等)可按需显示/隐藏面板中的各部分。
8.5 基础控件详解
SaveLoad(ParamStoreBarFriendly)
数据存取栏,提供"保存配置 / 加载配置"功能。由 LoongCAD 框架自动接管,无需手写事件。
| 属性 | 类型 | 说明 |
|---|---|---|
LoadName |
string |
当前选中的已保存配置名称 |
CreateName |
string |
新建配置时的名称输入 |
OkApplyModifyGetOnOffCancel
确定 / 应用 / 修改 / 获取 / 开关 / 取消 按钮组合。包含 ButtonEnum 枚举标识各按钮类型。由框架自动接管按钮事件。
OkApplyCancel
简化版按钮栏(确定 / 应用 / 取消),同样含 ButtonEnum,适用于不需要"修改/获取/开关"功能的简单组件。
8.6 目录与下拉控件
以下控件可直接拖到窗体上使用,也可在 Data 类中作为字段声明:
| 控件 | 类型 | 说明 |
|---|---|---|
ProfileCatalog |
下拉 | 型材目录浏览器 |
MaterialCatalog |
下拉 | 材质目录浏览器 |
BoltCatalogStandard |
下拉 | 螺栓标准目录 |
BoltCatalogSize |
下拉 | 螺栓尺寸目录 |
BoltCatalogLength |
下拉 | 螺栓长度目录 |
ChamferCombo |
下拉 | 倒角类型选择,含 DefaultChamferType / ChamferPosition 属性 |
ImageListComboBox |
下拉 | 带图片列表的下拉框 |
ImageSpriteComboBox |
下拉 | 带图片精灵的下拉框 |
ChamferCombo 示例:
public ChamferCombo chamfer = new ChamferCombo();
// chamfer.DefaultChamferType — 默认倒角类型
// chamfer.ChamferPosition — 倒角位置
8.7 参数数据类中的声明方式
将所有需要的面板以 public 字段声明在 [AttributeFields] 类中,并在构造函数中设置默认值。LoongCAD 会自动将每个字段渲染为对应的 UI 面板。
[AttributeFields]
public class MyData
{
// ── 螺栓四个面板 ──
public BoltBasicPropertyPanel.Data boltBasic = new BoltBasicPropertyPanel.Data();
public BoltHolePanel.Data boltHole = new BoltHolePanel.Data();
public BoltContentPanel.Data boltContent = new BoltContentPanel.Data();
public BoltExtendPanel.Data boltExtend = new BoltExtendPanel.Data();
// ── 板件面板 ──
public PlatePropertyPanel.Data plate = new PlatePropertyPanel.Data();
// ── 自定义参数(自动生成文本框/下拉框) ──
public double beamGap = 10.0;
public string material = "Q355B";
public int boltRows = 2;
public MyData()
{
boltBasic.BoltStandard = "HS10.9";
boltBasic.BoltSize = 24.0;
boltBasic.HoleTol = 2.0;
boltContent.WasherUp = true;
boltContent.WasherDown0 = true;
boltContent.Nut0 = true;
plate.Thickness = 10;
plate.Material = "Q235B";
plate.Name = "连接板";
plate.NoPrefix = "B";
}
}
⚠️ 参数数据类必须标注
[AttributeFields],且所有public字段会自动映射到 UI。private/protected字段不会被渲染。
📝 未覆盖的控件:
ConnectionCommonPropertyPanel(节点通用属性)、DetailCommonPropertyPanel(细部通用属性)——这两个由框架在特定组件类型中自动注入,通常不需要手动声明。如需定制,可在 VS 对象浏览器中查看其公开属性。