前两天,Q群有人问如何在GH中实现按键读取。其实这个东西很简单,因为GH的父窗体本身就是一个Form类,我们直接获取使用keydown事件就行了。
代码如下
- Private Sub RunScript(ByRef A As Object)
- Static addh As Boolean = False
- If Not addh Then
- form.KeyPreview = True
- AddHandler form.KeyDown, AddressOf GHkeydown
- addh = True
- End If
- 'RemoveHandler form.keydown,AddressOf ghkeydown
- a = keystr
- End Sub
- '<Custom additional code>
- Public keystr As String = ""
- Dim form As system.Windows.Forms.Form = grasshopper.Instances.DocumentEditor
- Public Sub ghkeydown(sender As Object, e As system.windows.forms.keyeventargs)
- keystr = e.KeyData.ToString
- Me.Component.ExpireSolution(True)
- End Sub
复制代码 定义静态变量是为了不重复关联,对于事件委托遍历实在太麻烦了,所以就没写。实际上应该看keydown事件上是否有委托,而且还可以写个清除委托的过程。
正在寻求开发 gha插件的同道中人,有会gha开发的联系本人,一起讨论有关问题Q772671249,新手可以加入群组82367748
|
|
举报