Я создаю надстройку для Autodesk Inventor (программа для трехмерного рисования) и на данный момент играю с позиционными ограничениями.
Я создал пользовательское меню для быстрого редактирования определенных значений, в данном случае значения высоты и ориентации.
Сначала я использовал событие textbox.textchanged
, чтобы изменить значение ограничения. Но это работало не на 100%. Например, при нажатии высоты 1000 высота будет меняться 4 раза (на каждую цифру).
Теперь я перешел к использованию validated event
. Это работает лучше, НО я хотел бы, чтобы текстовое поле инициировало проверку при нажатии кнопки Enter
. Для этого я на скорую руку это сделал, но это неправильно, я в этом уверен. Как правильно это написать?
Приведенный ниже код работает, но я хотел бы иметь правильный способ добиться результата.
Private Sub tbElevationValue_TextChanged(sender As Object, e As EventArgs) _
Handles tbElevation.Validated
' If the elevation parameter and textbox value are the same
' The sub must be aborted
If CDbl(tbElevation.Text) = oElevationParameter.Value * 10 Then Exit Sub
' Check the entered value
Dim oValue As Double
If tbElevation.Text = "" Then
oValue = 0
tbElevation.Text = 0
Else
oValue = tbElevation.Text
End If
' Set the parameter value
oElevationParameter.Value = oValue / 10
' Update the document
EM_AddIn.StandardAddInServer.m_inventorApplication.ActiveDocument.Update()
End Sub
Private Sub tbOrientation_TextChanged(sender As Object, e As EventArgs) _
Handles tbOrientation.Validated
' If the orientation parameter and textbox value are the same
' The sub must be aborted
If CDbl(tbOrientation.Text) = cRandiansToDegrees(oOrientationParameter.Value) Then Exit Sub
' Check the entered value
Dim oValue As Double
If tbOrientation.Text = "" Then
oValue = 0
tbOrientation.Text = 0
Else
oValue = tbOrientation.Text
End If
' Set the parameter value
oOrientationParameter.Value = cDegreesToRandians(oValue)
' Update the document
EM_AddIn.StandardAddInServer.m_inventorApplication.ActiveDocument.Update()
End Sub
Private Sub OrientationElevationEnterKey_Pressed(sender As Object, e As Windows.Forms.KeyEventArgs) Handles tbElevation.KeyUp, tbOrientation.KeyUp
If e.KeyCode = Windows.Forms.Keys.Enter Then
CType(sender, Windows.Forms.TextBox).Parent.Focus()
CType(sender, Windows.Forms.TextBox).Focus()
End If
End Sub