使用Visual Studio开发WINCC或FTView SE的.Net控件(二)
在上一篇文章末尾后记中记录了RA FTView SE控件事件的响应方法,我在后续制作控件的时候,发现事件参数的传递需要有特定的编写方式,记录一下:
VS控件事件
事件编写如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<DefaultEvent("MenuItemClick")> Public Class KNavMenu Inherits TreeView Public Event MenuItemClick As EventHandler Private Sub ShowSelectedNode() Dim args As New ThresholdReachedEventArgs With { .nodeName = SelectedNode.Name, .nodePath = SelectedNode.FullPath, .nodeIndex = SelectedNode.ToolTipText } RaiseEvent MenuItemClick(SelectedNode, args) End Sub End Class Class ThresholdReachedEventArgs Inherits EventArgs Public Property nodeName As String Public Property nodePath As String Public Property nodeIndex As Integer End Class |
SE中配置
勾选MenuItemClick事件,并复制到VBA
VBA代码
上面VS中的nodeName、nodePath、nodeIndex将以JSON字符串的形式传递过来。形如:
1 |
[{"Name":"nodeName","Value":"节点10","TypeName":"String"},{"Name":"nodePath","Value":"节点9\\节点10","TypeName":"String"},{"Name":"nodeIndex","Value":11,"TypeName":"Int32"}] |
不用担心,在 VBA 编辑器中可以使用JSONConverter 1.0 Type Library 的内置模块支持 .NET 控件中复杂数据类型的属性和方法参数。此模块将处理可以由 NewtonJSON 库序列化的数据类型。
1. 添加 JSONConverter 的引用库。
a. 在 VBA 编辑器中,选择工具 > 引用。
b. 选择 JSONConverter 1.0 Type Library 和 Microsoft Scripting Runtime
JsonConverter 有以下两个函数:
•ConvertToJson:将字典对象转换为 JSON 字符串。
•ParseJson:将 JSON 字符串转换为字典对象。
2. 在 VBA 中解析 JSON 字符串
使用以下代码进行解析
1 2 3 4 5 6 7 8 9 10 11 |
Private Sub DotNetControl1_OnEvent(ByVal eventName As String, ByVal eventParametersJson As String) If eventName = "MenuItemClick" Then Dim a As New JsonConvert Dim b As Object Set b = a.ParseJson(eventParametersJson) Debug.Print eventParametersJson Debug.Print b(1)("Name") & ":" & b(1)("Value") Debug.Print b(2)("Name") & ":" & b(2)("Value") Debug.Print b(3)("Name") & ":" & b(3)("Value") End If End Sub |
坐等大佬D盘更新,祝大佬全家福寿安康
有公众号之类的吗,之前这个网站打不开了
[…] 关于使用Change…
[…] 关于使用Functi…
谢谢提醒,已删 :)