私はAutodesk Inventor用のAddIn(3D図面ソフトウェア)を作成していますが、現在のところ位置制約を使って遊んでいます。ボタンを押したときにテキストボックスを検証する
特定の値(この場合は仰角と向きの値)をすばやく編集するためのカスタムユーザーメニューを作成しました。
最初に私は制約値を変更するのにtextbox.textchanged
イベントを使用しました。しかし、これは100%ではありませんでした。エレベーション1000を押した場合の例は、エレベーションを4回(1桁につき)変更します。
今私は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
が、このたびは、キーストロークがなされた結果ではないだろう、それは私がイベントを監視したい 'テキストboxes'にない場合でも、イベントがトリガされますか?これは必要以上のリソースを消費しませんか? –
これは本当ですが、KeyDownイベントの中にテストを簡単に追加すると、現在フォーカスされているコントロールがテキストボックスである場合にのみフォームにフォーカスを当てることができます – theBugger