STNodeEditor

Properties

NameTypeDescription
CanvasOffsetXfloat获取画布原点相对于控件 X 方向上的偏移位置
CanvasOffsetYfloat获取画布原点相对于控件 Y 方向上的偏移位置
CanvasOffsetPointF获取画布原点相对于控件偏移位置
CanvasValidBoundsRectangle获取画布中的有被用到的有效区域
CanvasScalefloat获取画布的缩放比例
Curvaturefloat获取或设置 Option 之间连线的曲度
ShowMagnetbool获取或设置移动画布中 Node 时候 是否启用磁铁效果
ShowBorderbool获取或设置 移动画布中是否显示 Node 边框
ShowGridbool获取或设置画布中是否绘制背景网格线条
ShowLocationbool获取或设置是否在画布边缘显示超出视角的 Node 位置信息
NodesSTNodeCollection获取画布中 Node 集合
ActiveNodeSTNode获取当前画布中被选中的活动 Node
HoverNodeSTNode获取当前画布中鼠标悬停的 Node
GridColorColor获取或设置绘制画布背景时 网格线条颜色
BorderColorColor获取或设置画布中 Node 边框颜色
BorderHoverColorColor获取或设置画布中悬停 Node 边框颜色
BorderSelectedColorColor获取或设置画布中选中 Node 边框颜色
BorderActiveColorColor获取或设置画布中活动 Node 边框颜色
MarkForeColorColor获取或设置画布绘制 Node 标记详情采用的前景色
MarkBackColorColor获取或设置画布绘制 Node 标记详情采用的背景色
MagnetColorColor获取或设置画布中移动 Node 时候 磁铁标记颜色
SelectedRectangleColorColor获取或设置画布中选择矩形区域的颜色
HighLineColorColor获取或设置画布中高亮连线的颜色
LocationForeColorColor获取或设置画布中边缘位置提示区域前景色
LocationBackColorColor获取或设置画布中边缘位置提示区域背景色
UnknownTypeColorColor获取或设置画布中当 Node 中 Option 数据类型无法确定时应当使用的颜色

Protected fields

NameTypeDescription
m_pt_in_controlPoint当前鼠标在控件中的实时位置
m_pt_in_canvasPointF当前鼠标在画布中的实时位置
m_pt_down_in_controlPoint鼠标点击时在控件上的位置
m_pt_down_in_canvasPointF鼠标点击时在画布中的位置
m_pt_canvas_oldPointF用于鼠标点击移动画布时候 鼠标点下时候的画布坐标位置
m_pt_dot_downPoint用于保存连线过程中保存点下 Option 的起点坐标
m_option_downSTNodeOption用于保存连线过程中鼠标点下的起点Option 当MouseUP时候 确定是否连接此节点
m_node_downSTNode当前鼠标点下的 STNode
m_mouse_in_controlbool当前鼠标是否位于控件中

Events

NameDescription
ActiveChanged活动的节点发生变化时候发生
SelectedChanged选择的节点发生变化时候发生
HoverChanged悬停的节点发生变化时候发生
NodeAdded当节点被添加时候发生
NodeRemoved当节点被移除时候发生
CanvasMoved移动画布原点时候发生
CanvasScaled缩放画布时候发生
OptionConnected连接节点选项时候发生
OptionConnecting正在连接节点选项时候发生
OptionDisConnected断开节点选项时候发生
OptionDisConnecting正在断开节点选项时候发生

Virtual method

OnDrawGrid
/// <summary>
/// 当绘制背景网格线时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="nWidth">需要绘制宽度</param>
/// <param name="nHeight">需要绘制高度</param>
protected virtual void OnDrawGrid(DrawingTools dt, int nWidth, int nHeight);
OnDrawNode
/// <summary>
/// 当绘制 Node 时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="rect">可视画布区域大小</param>
protected virtual void OnDrawNode(DrawingTools dt, Rectangle rect);
OnDrawNodeBorder
/// <summary>
/// 当绘制 Node 边框时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="node">目标node</param>
protected virtual void OnDrawNodeBorder(DrawingTools dt, STNode node);
OnDrawConnectedLine
/// <summary>
/// 当绘制已连接路径时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
protected virtual void OnDrawConnectedLine(DrawingTools dt);
OnDrawMark
/// <summary>
/// 当绘制 Mark 详情信息时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
protected virtual void OnDrawMark(DrawingTools dt);
OnDrawMagnet
/// <summary>
/// 当移动 Node 时候 需要显示对齐参考线时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="mi">匹配的磁铁信息</param>
protected virtual void OnDrawMagnet(DrawingTools dt, MagnetInfo mi);
OnDrawSelectedRectangle
/// <summary>
/// 绘制选择的矩形区域
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="rectf">位于控件上的矩形区域</param>
protected virtual void OnDrawSelectedRectangle(DrawingTools dt, RectangleF rectf);
OnDrawNodeOutLocation
/// <summary>
/// 绘制超出视觉区域的 Node 位置提示信息
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="sz">提示框边距</param>
/// <param name="lstPts">超出视觉区域的 Node 位置信息</param>
protected virtual void OnDrawNodeOutLocation(DrawingTools dt, Size sz, List<Point> lstPts);
OnDrawAlert
/// <summary>
/// 绘制提示信息
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="rect">需要绘制区域</param>
/// <param name="strText">需要绘制文本</param>
/// <param name="foreColor">信息前景色</param>
/// <param name="backColor">信息背景色</param>
/// <param name="al">信息位置</param>
protected virtual void OnDrawAlert(DrawingTools dt, Rectangle rect, string strText, Color foreColor, Color backColor, AlertLocation al);
GetAlertRectangle
/// <summary>
/// 获取提示信息需要绘制的矩形区域
/// </summary>
/// <param name="g">绘图表面</param>
/// <param name="strText">需要绘制文本</param>
/// <param name="al">信息位置</param>
/// <returns>矩形区域</returns>
protected virtual Rectangle GetAlertRectangle(Graphics g, string strText, AlertLocation al);

public method

FindNodeFromPoint
/// <summary>
/// 通过画布坐标进行寻找
/// </summary>
/// <param name="pt">画布中的坐标</param>
/// <returns>寻找到的数据</returns>
public NodeFindInfo FindNodeFromPoint(PointF pt);
GetSelectedNode
/// <summary>
/// 获取已经被选择的 Node 集合
/// </summary>
/// <returns>Node 集合</returns>
public STNode[] GetSelectedNode();
CanvasToControl
/// <summary>
/// 将画布坐标转换为控件坐标
/// </summary>
/// <param name="number">参数</param>
/// <param name="isX">是否为 X 坐标</param>
/// <returns>转换后的坐标</returns>
public float CanvasToControl(float number, bool isX);
CanvasToControl
/// <summary>
/// 将画布坐标转换为控件坐标
/// </summary>
/// <param name="pt">坐标</param>
/// <returns>转换后的坐标</returns>
public PointF CanvasToControl(PointF pt);
CanvasToControl
/// <summary>
/// 将画布坐标转换为控件坐标
/// </summary>
/// <param name="pt">坐标</param>
/// <returns>转换后的坐标</returns>
public Point CanvasToControl(Point pt);
CanvasToControl
/// <summary>
/// 将画布坐标转换为控件坐标
/// </summary>
/// <param name="rect">矩形区域</param>
/// <returns>转换后的矩形区域</returns>
public Rectangle CanvasToControl(Rectangle rect);
CanvasToControl
/// <summary>
/// 将画布坐标转换为控件坐标
/// </summary>
/// <param name="rect">矩形区域</param>
/// <returns>转换后的矩形区域</returns>
public RectangleF CanvasToControl(RectangleF rect);
ControlToCanvas
/// <summary>
/// 将控件坐标转换为画布坐标
/// </summary>
/// <param name="number">参数</param>
/// <param name="isX">是否为 X 坐标</param>
/// <returns>转换后的坐标</returns>
public float ControlToCanvas(float number, bool isX);
ControlToCanvas
/// <summary>
/// 将控件坐标转换为画布坐标
/// </summary>
/// <param name="pt">坐标</param>
/// <returns>转换后的坐标</returns>
public Point ControlToCanvas(Point pt);
ControlToCanvas
/// <summary>
/// 将控件坐标转换为画布坐标
/// </summary>
/// <param name="pt">坐标</param>
/// <returns>转换后的坐标</returns>
public PointF ControlToCanvas(PointF pt);
ControlToCanvas
/// <summary>
/// 将控件坐标转换为画布坐标
/// </summary>
/// <param name="rect">矩形区域</param>
/// <returns>转换后的区域</returns>
public Rectangle ControlToCanvas(Rectangle rect);
ControlToCanvas
/// <summary>
/// 将控件坐标转换为画布坐标
/// </summary>
/// <param name="rect">矩形区域</param>
/// <returns>转换后的区域</returns>
public RectangleF ControlToCanvas(RectangleF rect);
MoveCanvas
/// <summary>
/// 移动画布原点坐标到指定的控件坐标位置
/// 当不存在 Node 时候 无法移动
/// </summary>
/// <param name="x">X 坐标</param>
/// <param name="y">Y 坐标</param>
/// <param name="bAnimation">移动过程中是否启动动画效果</param>
/// <param name="ma">指定需要修改的坐标参数</param>
public void MoveCanvas(float x, float y, bool bAnimation, CanvasMoveArgs ma);
ScaleCanvas
/// <summary>
/// 缩放画布
/// 当不存在 Node 时候 无法缩放
/// </summary>
/// <param name="f">缩放比例</param>
/// <param name="x">缩放中心X位于控件上的坐标</param>
/// <param name="y">缩放中心Y位于控件上的坐标</param>
public void ScaleCanvas(float f, float x, float y);
GetConnectionInfo
/// <summary>
/// 获取当前已连接的 Option 对应关系
/// </summary>
/// <returns>连接信息集合</returns>
public ConnectionInfo[] GetConnectionInfo();
GetCanvasImage
/// <summary>
/// 获取画布中指定矩形区域图像
/// </summary>
/// <param name="rect">画布中指定的矩形区域</param>
/// <returns>图像</returns>
public Image GetCanvasImage(Rectangle rect);
GetCanvasImage
/// <summary>
/// 获取画布中指定矩形区域图像
/// </summary>
/// <param name="rect">画布中指定的矩形区域</param>
/// <param name="fScale">缩放比例</param>
/// <returns>图像</returns>
public Image GetCanvasImage(Rectangle rect, float fScale);
SaveCanvas
/// <summary>
/// 保存画布中的类容到文件中
/// </summary>
/// <param name="strFileName">文件路径</param>
public void SaveCanvas(string strFileName);
SaveCanvas
/// <summary>
/// 保存画布中的类容到数据流
/// </summary>
/// <param name="s">数据流对象</param>
public void SaveCanvas(Stream s);
GetCanvasData
/// <summary>
/// 获取画布中内容二进制数据
/// </summary>
/// <returns>二进制数据</returns>
public byte[] GetCanvasData();
LoadAssembly
/// <summary>
/// 加载程序集
/// </summary>
/// <param name="strFiles">程序集集合</param>
/// <returns>存在STNode类型的文件的个数</returns>
public int LoadAssembly(string[] strFiles);
LoadAssembly
/// <summary>
/// 加载程序集
/// </summary>
/// <param name="strFile">指定需要加载的文件</param>
/// <returns>是否加载成功</returns>
public bool LoadAssembly(string strFile);
GetTypes
/// <summary>
/// 获取当前编辑器中已加载的Node类型
/// </summary>
/// <returns>类型集合</returns>
public Type[] GetTypes();
LoadCanvas
/// <summary>
/// 从文件中加载数据
/// 注意: 此方法并不会清空画布中数据 而是数据叠加
/// </summary>
/// <param name="strFileName">文件路径</param>
public void LoadCanvas(string strFileName);
LoadCanvas
/// <summary>
/// 从二进制加载数据
/// 注意: 此方法并不会清空画布中数据 而是数据叠加
/// </summary>
/// <param name="byData">二进制数据</param>
public void LoadCanvas(byte[] byData);
LoadCanvas
/// <summary>
/// 从数据流中加载数据
/// 注意: 此方法并不会清空画布中数据 而是数据叠加
/// </summary>
/// <param name="s">数据流对象</param>
public void LoadCanvas(Stream s);
ShowAlert
/// <summary>
/// 在画布中显示提示信息
/// </summary>
/// <param name="strText">要显示的信息</param>
/// <param name="foreColor">信息前景色</param>
/// <param name="backColor">信息背景色</param>
public void ShowAlert(string strText, Color foreColor, Color backColor);
ShowAlert
/// <summary>
/// 在画布中显示提示信息
/// </summary>
/// <param name="strText">要显示的信息</param>
/// <param name="foreColor">信息前景色</param>
/// <param name="backColor">信息背景色</param>
/// <param name="al">信息要显示的位置</param>
public void ShowAlert(string strText, Color foreColor, Color backColor, AlertLocation al);
ShowAlert
/// <summary>
/// 在画布中显示提示信息
/// </summary>
/// <param name="strText">要显示的信息</param>
/// <param name="foreColor">信息前景色</param>
/// <param name="backColor">信息背景色</param>
/// <param name="nTime">信息持续时间</param>
/// <param name="al">信息要显示的位置</param>
/// <param name="bRedraw">是否立即重绘</param>
public void ShowAlert(string strText, Color foreColor, Color backColor, int nTime, AlertLocation al, bool bRedraw);
SetActiveNode
/// <summary>
/// 设置画布中活动的节点
/// </summary>
/// <param name="node">需要被设置为活动的节点</param>
/// <returns>设置前的活动节点</returns>
public STNode SetActiveNode(STNode node);
AddSelectedNode
/// <summary>
/// 向画布中添加一个被选中的节点
/// </summary>
/// <param name="node">需要被选中的节点</param>
/// <returns>是否添加成功</returns>
public bool AddSelectedNode(STNode node);
RemoveSelectedNode
/// <summary>
/// 向画布中移除一个被选中的节点
/// </summary>
/// <param name="node">需要被移除的节点</param>
/// <returns>是移除否成功</returns>
public bool RemoveSelectedNode(STNode node);
SetTypeColor
/// <summary>
/// 向编辑器中添加默认数据类型颜色
/// </summary>
/// <param name="t">数据类型</param>
/// <param name="clr">对应颜色</param>
/// <returns>被设置后的颜色</returns>
public Color SetTypeColor(Type t, Color clr);
SetTypeColor
/// <summary>
/// 向编辑器中添加默认数据类型颜色
/// </summary>
/// <param name="t">数据类型</param>
/// <param name="clr">对应颜色</param>
/// <param name="bReplace">若已经存在是否替换颜色</param>
/// <returns>被设置后的颜色</returns>
public Color SetTypeColor(Type t, Color clr, bool bReplace);

STNode

Properties

NameTypeDescription
OwnerSTNodeEditor获取当前 Node 所有者
IsSelectedbool获取或设置 Node 是否处于被选中状态
IsActivebool获取 Node 是否处于活动状态
TitleColorColor获取或设置标题背景颜色
MarkColorColor获取或设置标记信息背景颜色
ForeColorColor获取或设置当前 Node 前景色
BackColorColor获取或设置当前 Node 背景色
Titlestring获取或设置 Node 标题
Markstring获取或设置 Node 标记信息
Leftint获取或设置 Node 左边坐标
Topint获取或设置 Node 上边坐标
Widthint获取或设置 Node 宽度 当AutoSize被设置时 无法设置此值
Heightint获取或设置 Node 高度 当AutoSize被设置时 无法设置此值
ItemHeightint获取或设置 Node 每个选项的高度
AutoSizebool获取或设置 Node 是否自动计算宽高
Rightint获取 Node 右边边坐标
Bottomint获取 Node 下边坐标
RectangleRectangle获取 Node 矩形区域
TitleRectangleRectangle获取 Node 标题矩形区域
MarkRectangleRectangle获取 Node 标记矩形区域
TitleHeightint获取或设置 Node 标题高度
InputOptionsCountint获取输入选项集合个数
OutputOptionsCountint获取输出选项个数
ControlsCountint获取 Node 所包含的控件集合个数
LocationPoint获取 Node 坐标位置
SizeSize获取 Node 大小
LockOptionbool获取或设置是否锁定Option选项 锁定后不在接受连接
LockLocationbool获取或设置是否锁定Node位置 锁定后不可移动
ContextMenuStripContextMenuStrip获取或设置当前Node 上下文菜单
Tagobject获取或设置用户自定义保存的数据
GuidGuid获取全局唯一标识
LetGetOptionsbool获取或设置是否允许外部访问STNodeOption

Protected fields

NameTypeDescription
m_ctrl_activeSTNodeControl当前Node中 活动的控件
m_ctrl_hoverSTNodeControl当前Node中 悬停的控件
m_ctrl_downSTNodeControl当前Node中 鼠标点下的控件

Virtual method

OnCreate
/// <summary>
/// 当Node被构造时候发生
/// </summary>
protected virtual void OnCreate();
OnDrawNode
/// <summary>
/// 绘制整个Node
/// </summary>
/// <param name="dt">绘制工具</param>
protected internal virtual void OnDrawNode(DrawingTools dt);
OnDrawTitle
/// <summary>
/// 绘制Node标题部分
/// </summary>
/// <param name="dt">绘制工具</param>
protected virtual void OnDrawTitle(DrawingTools dt);
OnDrawBody
/// <summary>
/// 绘制Node主体部分 除去标题部分
/// </summary>
/// <param name="dt">绘制工具</param>
protected virtual void OnDrawBody(DrawingTools dt);
OnDrawMark
/// <summary>
/// 绘制标记信息
/// </summary>
/// <param name="dt">绘制工具</param>
protected internal virtual void OnDrawMark(DrawingTools dt);
OnDrawOptionDot
/// <summary>
/// 绘制选项连线的点
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="op">指定的选项</param>
protected virtual void OnDrawOptionDot(DrawingTools dt, STNodeOption op);
OnDrawOptionText
/// <summary>
/// 绘制选项的文本
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="op">指定的选项</param>
protected virtual void OnDrawOptionText(DrawingTools dt, STNodeOption op);
OnSetOptionDotLocation
/// <summary>
/// 当计算Option连线点位置时候发生
/// </summary>
/// <param name="op">需要计算的Option</param>
/// <param name="pt">自动计算出的位置</param>
/// <param name="nIndex">当前Option的索引</param>
/// <returns>新的位置</returns>
protected virtual Point OnSetOptionDotLocation(STNodeOption op, Point pt, int nIndex);
OnSetOptionTextRectangle
/// <summary>
/// 当计算Option文本区域时候发生
/// </summary>
/// <param name="op">需要计算的Option</param>
/// <param name="rect">自动计算出的区域</param>
/// <param name="nIndex">当前Option的索引</param>
/// <returns>新的区域</returns>
protected virtual Rectangle OnSetOptionTextRectangle(STNodeOption op, Rectangle rect, int nIndex);
GetDefaultNodeSize
/// <summary>
/// 获取当前STNode所需要的默认大小
/// 返回的大小并不会限制绘制区域 任然可以在此区域之外绘制
/// 但是并不会被STNodeEditor所接受 并触发对应事件
/// </summary>
/// <param name="g">绘图面板</param>
/// <returns>计算出来的大小</returns>
protected virtual Size GetDefaultNodeSize(Graphics g);
OnBuildMarkRectangle
/// <summary>
/// 计算当前Mark所需要的矩形区域
/// 返回的大小并不会限制绘制区域 任然可以在此区域之外绘制
/// 但是并不会被STNodeEditor所接受 并触发对应事件
/// </summary>
/// <param name="g">绘图面板</param>
/// <returns>计算后的区域</returns>
protected virtual Rectangle OnBuildMarkRectangle(Graphics g);
OnSaveNode
/// <summary>
/// 当需要保存时候 此Node有哪些需要额外保存的数据
/// 注意: 保存时并不会进行序列化 还原时候仅重新通过空参数构造器创建此Node
/// 然后调用 OnLoadNode() 将保存的数据进行还原
/// </summary>
/// <param name="dic">需要保存的数据</param>
protected virtual void OnSaveNode(Dictionary<string, byte[]> dic);
OnLoadNode
/// <summary>
/// 当还原该节点时候会将 OnSaveNode() 所返回的数据重新传入此函数
/// </summary>
/// <param name="dic">保存时候的数据</param>
protected internal virtual void OnLoadNode(Dictionary<string, byte[]> dic);
OnEditorLoadCompleted
/// <summary>
/// 当编辑器加载完成所有的节点时候发生
/// </summary>
protected internal virtual void OnEditorLoadCompleted();
SetOptionText
/// <summary>
/// 设置Option的文本信息
/// </summary>
/// <param name="op">目标Option</param>
/// <param name="strText">文本</param>
/// <returns>是否成功</returns>
protected bool SetOptionText(STNodeOption op, string strText);
SetOptionTextColor
/// <summary>
/// 设置Option文本信息颜色
/// </summary>
/// <param name="op">目标Option</param>
/// <param name="clr">颜色</param>
/// <returns>是否成功</returns>
protected bool SetOptionTextColor(STNodeOption op, Color clr);
SetOptionDotColor
/// <summary>
/// 设置Option连线点颜色
/// </summary>
/// <param name="op">目标Option</param>
/// <param name="clr">颜色</param>
/// <returns>是否成功</returns>
protected bool SetOptionDotColor(STNodeOption op, Color clr);
OnOwnerChanged
/// <summary>
/// 当所有者发生改变时候发生
/// </summary>
protected virtual void OnOwnerChanged();
OnSelectedChanged
/// <summary>
/// 当选中状态改变时候发生
/// </summary>
protected virtual void OnSelectedChanged();
OnActiveChanged
/// <summary>
/// 当活动状态改变时候发生
/// </summary>
protected virtual void OnActiveChanged();
SetOptionsLocation
/// <summary>
/// 计算每个Option的位置
/// </summary>
protected virtual void SetOptionsLocation();

public method

Invalidate
/// <summary>
/// 重绘Node
/// </summary>
public void Invalidate();
Invalidate
/// <summary>
/// 重绘 Node 指定区域
/// </summary>
/// <param name="rect">Node 指定区域</param>
public void Invalidate(Rectangle rect);
GetInputOptions
/// <summary>
/// 获取此Node所包含的输入Option集合
/// </summary>
/// <returns>Option集合</returns>
public STNodeOption[] GetInputOptions();
GetOutputOptions
/// <summary>
/// 获取此Node所包含的输出Option集合
/// </summary>
/// <returns>Option集合</returns>
public STNodeOption[] GetOutputOptions();
SetSelected
/// <summary>
/// 设置Node的选中状态
/// </summary>
/// <param name="bSelected">是否选中</param>
/// <param name="bRedraw">是否重绘</param>
public void SetSelected(bool bSelected, bool bRedraw);

STNodeOption

Properties

NameTypeDescription
OwnerSTNode获取当前 Option 所属的 Node
IsSinglebool获取当前 Option 是否仅能被连接一次
IsInputbool获取当前 Option 是否是输入选项
TextColorColor获取或设置当前 Option 文本颜色
DotColorColor获取或设置当前 Option 连接点的颜色
Textstring获取或设置当前 Option 显示文本 当AutoSize被设置时 无法修改此属性
DotLeftint获取当前 Option 连接点的左边坐标
DotTopint获取当前 Option 连接点的上边坐标
DotSizeint获取当前 Option 连接点的宽度
TextRectangleRectangle获取当前 Option 文本区域
Dataobject获取或者设置当前 Option 所包含的数据
DataTypeType获取当前 Option 数据类型
DotRectangleRectangle获取当前 Option 连接点的区域
ConnectionCountint获取当前 Option 被连接的个数

Events

NameDescription
Connected当被连接时候发生
Connecting当连接开始发生时发生
DisConnected当连接断开时候发生
DisConnecting当连接开始断开时发生
DataTransfer当有数据传递时候发生

Constructor

Constructor
/// <summary>
/// 构造一个 Option
/// </summary>
/// <param name="strText">显示文本</param>
/// <param name="dataType">数据类型</param>
/// <param name="bSingle">是否为单连接</param>
public STNodeOption(string strText, Type dataType, bool bSingle);

Virtual method

Invalidate
/// <summary>
/// 重绘整个控件
/// </summary>
protected void Invalidate();
ConnectingOption
/// <summary>
/// 当前 Option 开始连接目标 Option
/// </summary>
/// <param name="op">需要连接的 Option</param>
/// <returns>是否允许继续操作</returns>
protected virtual bool ConnectingOption(STNodeOption op);
DisConnectingOption
/// <summary>
/// 当前 Option 开始断开目标 Option
/// </summary>
/// <param name="op">需要断开的 Option</param>
/// <returns>是否允许继续操作</returns>
protected virtual bool DisConnectingOption(STNodeOption op);

public method

DisConnectionAll
/// <summary>
/// 断开当前 Option 的所有连接
/// </summary>
public void DisConnectionAll();
GetConnectedOption
/// <summary>
/// 获取当前 Option 所连接的 Option 集合
/// </summary>
/// <returns>如果为null 则表示不存在所有者 否则返回集合</returns>
public List<STNodeOption> GetConnectedOption();
TransferData
/// <summary>
/// 向当前 Option 所连接的所有 Option 投递数据
/// </summary>
public void TransferData();
TransferData
/// <summary>
/// 向当前 Option 所连接的所有 Option 投递数据
/// </summary>
/// <param name="data">需要投递的数据</param>
public void TransferData(object data);
TransferData
/// <summary>
/// 向当前 Option 所连接的所有 Option 投递数据
/// </summary>
/// <param name="data">需要投递的数据</param>
/// <param name="bDisposeOld">是否释放旧数据</param>
public void TransferData(object data, bool bDisposeOld);

STNodePropertyGrid

Properties

NameTypeDescription
STNodeSTNode当前显示的STNode
ItemHoverColorColor获取或设置属性选项被鼠标悬停时候背景色
ItemSelectedColorColor获取或设置属性选项被选中时候背景色 当AutoColor被设置时此属性不能被设置
ItemValueBackColorColor获取或设置属性选项值背景色
TitleColorColor获取或设置默认标题背景色
ErrorColorColor获取或设置属性设置错误时候提示信息背景色
DescriptionColorColor获取或设置属性描述信息背景色
ShowTitlebool获取或设置是否显示节点标题
AutoColorbool获取或设置是否根据STNode自动设置控件高亮颜色
InfoFirstOnDrawbool获取或当节点被设置时候 是否优先绘制信息面板
ReadOnlyModelbool获取或设置当前属性编辑器是否处于只读模式
ScrollOffsetint获取当前滚动条高度

Protected fields

NameTypeDescription
m_rect_linkRectangle作者链接地址区域
m_rect_helpRectangle查看帮助按钮区域
m_rect_titleRectangle编辑器标题区域
m_rect_switchRectangle面板切换按钮区域
m_nOffsetYint控件在绘制过程中使用的垂直滚动偏移
m_nInfoOffsetYint保存的信息面板垂直滚动偏移
m_nPropertyOffsetYint保存的属性面板垂直滚动偏移
m_nVHeightint控件在绘制过程中使用的绘图区域总高度
m_nInfoVHeightint保存的信息面板需要的总高度
m_nPropertyVHeightint保存的属性面板需要的总高度
m_nInfoLeftint信息面板中Key显示需要的水平宽度

Virtual method

OnPaint
/// <summary>
/// 当控件重绘时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected override void OnPaint(PaintEventArgs e);
OnMouseMove
/// <summary>
/// 当鼠标在控件上移动时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected override void OnMouseMove(MouseEventArgs e);
OnMouseDown
/// <summary>
/// 当鼠标在控件上点下时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected override void OnMouseDown(MouseEventArgs e);
OnMouseUp
/// <summary>
/// 当鼠标在控件上抬起时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected override void OnMouseUp(MouseEventArgs e);
OnMouseLeave
/// <summary>
/// 当鼠标离开控件时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected override void OnMouseLeave(EventArgs e);
OnMouseWheel
/// <summary>
/// 当鼠标在控件上滚动滚轮时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected override void OnMouseWheel(MouseEventArgs e);
OnResize
/// <summary>
/// 当控件尺寸发生改变时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected override void OnResize(EventArgs e);
OnDrawPropertyItem
/// <summary>
/// 当绘制属性选项时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="item">目标属性选项描述器</param>
/// <param name="nIndex">选项所在索引</param>
protected virtual void OnDrawPropertyItem(DrawingTools dt, STNodePropertyDescriptor item, int nIndex);
OnDrawTitle
/// <summary>
/// 绘制属性窗口标题
/// </summary>
/// <param name="dt">绘制工具</param>
protected virtual void OnDrawTitle(DrawingTools dt);
OnDrawDescription
/// <summary>
/// 当需要绘制属性描述信息时发生
/// </summary>
/// <param name="dt">绘制工具</param>
protected virtual void OnDrawDescription(DrawingTools dt);
OnDrawErrorInfo
/// <summary>
/// 当需要绘制错误信息时发生
/// </summary>
/// <param name="dt">绘制工具</param>
protected virtual void OnDrawErrorInfo(DrawingTools dt);
OnDrawInfo
/// <summary>
/// 当绘制节点信息时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
protected virtual void OnDrawInfo(DrawingTools dt);
OnProcessPropertyMouseDown
/// <summary>
/// 当在属性面板鼠标点下时候发生
/// </summary>
/// <param name="e">鼠标事件参数</param>
protected virtual void OnProcessPropertyMouseDown(MouseEventArgs e);
OnProcessInfoMouseDown
/// <summary>
/// 当在信息面板鼠标点下时候发生
/// </summary>
/// <param name="e">鼠标事件参数</param>
protected virtual void OnProcessInfoMouseDown(MouseEventArgs e);
OnProcessPropertyMouseMove
/// <summary>
/// 当在属性面板鼠标移动时候发生
/// </summary>
/// <param name="e">鼠标事件参数</param>
protected virtual void OnProcessPropertyMouseMove(MouseEventArgs e);
OnProcessHelpMouseMove
/// <summary>
/// 当在信息面板鼠标移动时候发生
/// </summary>
/// <param name="e">鼠标事件参数</param>
protected virtual void OnProcessHelpMouseMove(MouseEventArgs e);

public method

SetNode
/// <summary>
/// 设置需要显示的STNode节点
/// </summary>
/// <param name="node">目标节点</param>
public void SetNode(STNode node);
SetInfoKey
/// <summary>
/// 设置信息页面Key的显示文本
/// </summary>
/// <param name="strAuthor">作者</param>
/// <param name="strMail">邮箱</param>
/// <param name="strLink">连接</param>
/// <param name="strHelp">查看帮助</param>
public void SetInfoKey(string strAuthor, string strMail, string strLink, string strHelp);
SetErrorMessage
/// <summary>
/// 设置要显示的错误信息
/// </summary>
/// <param name="strText">错误信息</param>
public void SetErrorMessage(string strText);

STNodeTreeView

Properties

NameTypeDescription
ItemBackColorColor获取或设置每行属性选项背景色
ItemHoverColorColor获取或设置属性选项被鼠标悬停时候背景色
TitleColorColor获取或设置顶部检索区域背景色
TextBoxColorColor获取或设置检索文本框的背景色
HightLightTextColorColor获取或设置检索时候高亮文本颜色
InfoButtonColorColor获取或设置信息显示按钮颜色 若设置AutoColor无法设置此属性值
FolderCountColorColor获取或设置统计个数的文本颜色
ShowFolderCountbool获取或设置是否统计STNode的个数
ShowInfoButtonbool获取或设置是否显示信息按钮
InfoPanelIsLeftLayoutbool获取或设置预览窗口是否是向左布局
AutoColorbool获取或设置控件中部分颜色来之对应的STNode的标题颜色
EditorSTNodeEditor获取节点预览时候使用的STNodeEditor
PropertyGridSTNodePropertyGrid获取节点预览时候使用的STNodePropertyGrid

Virtual method

OnDrawSearch
/// <summary>
/// 当绘制检索文本区域时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
protected virtual void OnDrawSearch(DrawingTools dt);
OnStartDrawItem
/// <summary>
/// 当开始绘制树节点的每一个节点时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="Items">当前需要绘制的集合</param>
/// <param name="nCounter">已经绘制个数的计数器</param>
/// <param name="nLevel">当前位于第几级子集合</param>
/// <returns>已经绘制个数</returns>
protected virtual int OnStartDrawItem(DrawingTools dt, STNodeTreeCollection Items, int nCounter, int nLevel);
OnDrawItem
/// <summary>
/// 当绘制树节点每一个节点时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="items">当前需要绘制的集合</param>
/// <param name="nCounter">已经绘制个数的计数器</param>
/// <param name="nLevel">当前位于第几级子集合</param>
protected virtual void OnDrawItem(DrawingTools dt, STNodeTreeCollection items, int nCounter, int nLevel);
OnDrawSwitch
/// <summary>
/// 当绘制树节点展开与关闭开关时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="items">当前需要绘制的集合</param>
protected virtual void OnDrawSwitch(DrawingTools dt, STNodeTreeCollection items);
OnDrawItemText
/// <summary>
/// 当绘制树节点的文本时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="items">当前需要绘制的集合</param>
/// <param name="rect">文本域所在矩形区域</param>
protected virtual void OnDrawItemText(DrawingTools dt, STNodeTreeCollection items, Rectangle rect);
OnDrawItemIcon
/// <summary>
/// 当绘制树节点图标时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
/// <param name="items">当前需要绘制的集合</param>
/// <param name="rect">文本域所在矩形区域</param>
protected virtual void OnDrawItemIcon(DrawingTools dt, STNodeTreeCollection items, Rectangle rect);

public method

Search
/// <summary>
/// 在控件中检索STNode
/// </summary>
/// <param name="strText">需要检索的文本</param>
public void Search(string strText);
AddNode
/// <summary>
/// 向控件中添加一个STNode类型
/// </summary>
/// <param name="stNodeType">STNode类型</param>
/// <returns>是否添加成功</returns>
public bool AddNode(Type stNodeType);
LoadAssembly
/// <summary>
/// 从文件中向控件添加STNode类型
/// </summary>
/// <param name="strFile">指定文件路径</param>
/// <returns>添加成功个数</returns>
public int LoadAssembly(string strFile);
Clear
/// <summary>
/// 清空控件中所有STNode类型
/// </summary>
public void Clear();
RemoveNode
/// <summary>
/// 向控件中移除一个STNode类型
/// </summary>
/// <param name="stNodeType">STNode类型</param>
/// <returns>是否移除成功</returns>
public bool RemoveNode(Type stNodeType);

STNodeTreeCollection

STNodeTreeCollection类被protected修饰 在STNodeTreeView内部 仅继承STNodeTreeView才能访问

Properties

NameTypeDescription
Namestring获取当前树节点显示名称
NameLowerstring获取当前树节点显示名称的小写字符串
STNodeTypeType获取当前树节点对应的STNode类型
ParentSTNodeTreeCollection获取当前树节点的父级树节点
STNodeCountint获取当前树节点下拥有的STNode类型个数
Pathstring获取当前树节点对应STNode类型在树控件中对应路径
IsOpenbool获取当前或设置树节点是否为打开状态
IsLibraryRootbool获取当前树节点是否为加载模块的根路劲节点
DisplayRectangleRectangle获取当前树节点在控件中的显示区域
SwitchRectangleRectangle获取当前树节点在控件中的开关按钮区域
InfoRectangleRectangle获取当前树节点在控件中的信息按钮区域
STNodeTypeColorColor获取当前树节点对应STNode类型的标题颜色
Countint获取当前树节点所包含子节点个数

Constructor

Constructor
/// <summary>
/// 构造一颗树节点集合
/// </summary>
/// <param name="strName">当前树节点在控件中的显示名称</param>
public STNodeTreeCollection(string strName);

public method

Add
/// <summary>
/// 向当前树节点中添加一个子节点
/// </summary>
/// <param name="strName">节点显示名称</param>
/// <returns>添加后的子节点集合</returns>
public STNodeTreeCollection Add(string strName);
Remove
/// <summary>
/// 向当前树节点中删除一个子集合
/// </summary>
/// <param name="strName">子集合名称</param>
/// <param name="isAutoDelFolder">是否递归向上自动清空无用节点</param>
/// <returns>是否删除成功</returns>
public bool Remove(string strName, bool isAutoDelFolder);
Clear
/// <summary>
/// 清空当前树节点中所有子节点
/// </summary>
public void Clear();
GetKeys
/// <summary>
/// 获取当前树节点中所有的名称数组
/// </summary>
/// <returns></returns>
public string[] GetKeys();
Copy
/// <summary>
/// 拷贝当前树节点集合中所有数据
/// </summary>
/// <returns>拷贝的副本</returns>
public STNodeTreeCollection Copy();
GetEnumerator
/// <summary>
/// 返回 System.Collections.IEnumerator 的 Array
/// </summary>
/// <returns></returns>
public IEnumerator GetEnumerator();

STNodeEditorPannel

Properties

NameTypeDescription
LeftLayoutbool获取或设置是否是左边布局
SplitLineColorColor获取或这是分割线颜色
HandleLineColorColor获取或设置分割线手柄颜色
ShowScalebool获取或设置编辑器缩放时候显示比例
ShowConnectionStatusbool获取或设置节点连线时候是否显示状态
Xint获取或设置分割线水平宽度
Yint获取或设置分割线垂直高度
EditorSTNodeEditor获取面板中的STNodeEditor
TreeViewSTNodeTreeView获取面板中的STNodeTreeView
PropertyGridSTNodePropertyGrid获取面板中的STNodePropertyGrid

public method

AddSTNode
/// <summary>
/// 向树控件中添加一个STNode
/// </summary>
/// <param name="stNodeType">STNode类型</param>
/// <returns>是否添加成功</returns>
public bool AddSTNode(Type stNodeType);
LoadAssembly
/// <summary>
/// 从程序集中加载STNode
/// </summary>
/// <param name="strFileName">程序集路径</param>
/// <returns>添加成功个数</returns>
public int LoadAssembly(string strFileName);
SetConnectionStatusText
/// <summary>
/// 设置编辑器显示连接状态的文本
/// </summary>
/// <param name="status">连接状态</param>
/// <param name="strText">对应显示文本</param>
/// <returns>旧文本</returns>
public string SetConnectionStatusText(ConnectionStatus status, string strText);

STNodeAttribute

Properties

NameTypeDescription
Pathstring获取STNode节点期望在树形控件的路径
Authorstring获取STNode节点的作者名称
Mailstring获取STNode节点的作者邮箱
Linkstring获取STNode节点的作者链接
Descriptionstring获取STNode节点的描述信息

Constructor

Constructor
/// <summary>
/// 构造一个STNode特性
/// </summary>
/// <param name="strPath">期望路径</param>
public STNodeAttribute(string strPath) : this(strPath, null, null, null, null);
Constructor
/// <summary>
/// 构造一个STNode特性
/// </summary>
/// <param name="strPath">期望路径</param>
/// <param name="strDescription">描述信息</param>
public STNodeAttribute(string strPath, string strDescription) : this(strPath, null, null, null, strDescription);
Constructor
/// <summary>
/// 构造一个STNode特性
/// </summary>
/// <param name="strPath">期望路径</param>
/// <param name="strAuthor">STNode作者名称</param>
/// <param name="strMail">STNode作者邮箱</param>
/// <param name="strLink">STNode作者链接</param>
/// <param name="strDescription">STNode节点描述信息</param>
public STNodeAttribute(string strPath, string strAuthor, string strMail, string strLink, string strDescription);

STNodePropertyAttribute

Properties

NameTypeDescription
Namestring获取属性需要在属性编辑器上显示的名称
Descriptionstring获取属性需要在属性编辑器上显示的描述
DescriptorTypeType获取属性描述器类型

Constructor

Constructor
/// <summary>
/// 构造一个STNode属性特性
/// </summary>
/// <param name="strKey">需要显示的名称</param>
/// <param name="strDesc">需要显示的描述信息</param>
public STNodePropertyAttribute(string strKey, string strDesc);

STNodePropertyDescriptor

Properties

NameTypeDescription
NodeSTNode获取目标节点
ControlSTNodePropertyGrid获取所属的节点属性编辑器控件
RectangleRectangle获取选项所在区域
RectangleLRectangle获取选项名称所在区域
RectangleRRectangle获取选项值所在区域
Namestring获取选项需要显示的名称
Descriptionstring获取属性对应的描述信息
PropertyInfoPropertyInfo获取属性信息

Virtual method

OnSetItemLocation
/// <summary>
/// 当确定STNode属性在属性编辑器上的位置时候发生
/// </summary>
protected internal virtual void OnSetItemLocation();
GetValueFromString
/// <summary>
/// 将字符串形式的属性值转换为属性目标类型的值
/// 默认只支持 int float double string bool 以及上述类型的Array
/// 若目标类型不在上述中 请重写此函数自行转换
/// </summary>
/// <param name="strText">字符串形式的属性值</param>
/// <returns>属性真实目标类型的值</returns>
protected internal virtual object GetValueFromString(string strText);
GetStringFromValue
/// <summary>
/// 将属性目标类型的值转换为字符串形式的值
/// 默认对类型值进行 ToString() 操作
/// 如需特殊处理 请重写此函数自行转换
/// </summary>
/// <returns>属性值的字符串形式</returns>
protected internal virtual string GetStringFromValue();
GetValueFromBytes
/// <summary>
/// 将二进制形式的属性值转换为属性目标类型的值 用于从文件存储中的数据还原属性值
/// 默认将其转换为字符串然后调用 GetValueFromString(string)
/// 此函数与 GetBytesFromValue() 相对应 若需要重写函数应当两个函数一起重写
/// </summary>
/// <param name="byData">二进制数据</param>
/// <returns>属性真实目标类型的值</returns>
protected internal virtual object GetValueFromBytes(byte[] byData);
GetBytesFromValue
/// <summary>
/// 将属性目标类型的值转换为二进制形式的值 用于文件存储时候调用
/// 默认调用 GetStringFromValue() 然后将字符串转换为二进制数据
/// 如需特殊处理 请重写此函数自行转换 并且重写 GetValueFromBytes()
/// </summary>
/// <returns>属性值的二进制形式</returns>
protected internal virtual byte[] GetBytesFromValue();
GetValue
/// <summary>
/// 此函数对应 System.Reflection.PropertyInfo.GetValue()
/// </summary>
/// <param name="index">索引属性的可选索引值 对于非索引属性 此值应为null</param>
/// <returns>属性值</returns>
protected internal virtual object GetValue(object[] index);
SetValue
/// <summary>
/// 此函数对应 System.Reflection.PropertyInfo.SetValue()
/// </summary>
/// <param name="value">需要设置的属性值</param>
protected internal virtual void SetValue(object value);
SetValue
/// <summary>
/// 此函数对应 System.Reflection.PropertyInfo.SetValue()
/// 在调用之前会默认进行 GetValueFromString(strValue) 处理
/// </summary>
/// <param name="strValue">需要设置的属性字符串形式的值</param>
protected internal virtual void SetValue(string strValue);
SetValue
/// <summary>
/// 此函数对应 System.Reflection.PropertyInfo.SetValue()
/// 在调用之前会默认进行 GetValueFromBytes(byte[]) 处理
/// </summary>
/// <param name="byData">需要设置的属性二进制数据</param>
protected internal virtual void SetValue(byte[] byData);
SetValue
/// <summary>
/// 此函数对应 System.Reflection.PropertyInfo.SetValue()
/// </summary>
/// <param name="value">需要设置的属性值</param>
/// <param name="index">索引属性的可选索引值 对于非索引属性 此值应为null</param>
protected internal virtual void SetValue(object value, object[] index);
SetValue
/// <summary>
/// 此函数对应 System.Reflection.PropertyInfo.SetValue()
/// 在调用之前会默认进行 GetValueFromString(strValue) 处理
/// </summary>
/// <param name="strValue">需要设置的属性字符串形式的值</param>
/// <param name="index">索引属性的可选索引值 对于非索引属性 此值应为null</param>
protected internal virtual void SetValue(string strValue, object[] index);
SetValue
/// <summary>
/// 此函数对应 System.Reflection.PropertyInfo.SetValue()
/// 在调用之前会默认进行 GetValueFromBytes(byte[]) 处理
/// </summary>
/// <param name="byData">需要设置的属性二进制数据</param>
/// <param name="index">索引属性的可选索引值 对于非索引属性 此值应为null</param>
protected internal virtual void SetValue(byte[] byData, object[] index);
OnSetValueError
/// <summary>
/// 当设置属性值发生错误时候发生
/// </summary>
/// <param name="ex">异常信息</param>
protected internal virtual void OnSetValueError(Exception ex);
OnDrawValueRectangle
/// <summary>
/// 当绘制属性在属性编辑器上的值所在区域时候发生
/// </summary>
/// <param name="dt">绘制工具</param>
protected internal virtual void OnDrawValueRectangle(DrawingTools dt);
OnMouseEnter
/// <summary>
/// 当鼠标进入属性值所在区域时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected internal virtual void OnMouseEnter(EventArgs e);
OnMouseDown
/// <summary>
/// 当鼠标在属性值所在区域点击时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected internal virtual void OnMouseDown(MouseEventArgs e);
OnMouseMove
/// <summary>
/// 当鼠标在属性值所在区域移动时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected internal virtual void OnMouseMove(MouseEventArgs e);
OnMouseUp
/// <summary>
/// 当鼠标在属性值所在区域抬起时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected internal virtual void OnMouseUp(MouseEventArgs e);
OnMouseLeave
/// <summary>
/// 当鼠标在属性值所在区域离开时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected internal virtual void OnMouseLeave(EventArgs e);
OnMouseClick
/// <summary>
/// 当鼠标在属性值所在区域点击时候发生
/// </summary>
/// <param name="e">事件参数</param>
protected internal virtual void OnMouseClick(MouseEventArgs e);

public method

Invalidate
/// <summary>
/// 重绘选项区域
/// </summary>
public void Invalidate();