0

VB.NET Windows フォーム プロジェクト、VS2010。

複数のタブページを持つタブコントロールがあり、各タブページにはテキストボックスがあります。タブが選択されたときに、テキスト ボックス内のテキストの最後にフォーカス (および挿入ポイント) を移動します。各タブで次のコードを使用してジャンキー プロジェクトを作成すると、正常に動作します。

Private Sub TabPage1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage1.Enter
  With TextBox1
    .SelectionStart = .Text.Length
    .Select()
  End With
End Sub

ただし、実際のプロジェクトでは同じコードが機能しません。ステップスルーすると、ブレークポイントとIDEはフォーカスイベントが同じ順序で発生しないことを意味するため、デバッグに問題があります。私が望む結果を得るための助け、またはデバッグ方法さえあれば、どんな助けでも大歓迎です。

4

1 に答える 1

0

System.Diagnostics.Debug.Write("FunctionName: xyz, ActiveControl selected:" & Me.ActiveControl) を使用してイベントの順序を出力すると、コール スタックの順序と、どのイベントがフォーカスを奪うかがわかります。これは、IDE でデバッグするときにイベント シーケンスを再現するのにも役立ちます。

ほとんどのタブ イベントの最初と最後に Debug.Write ステートメントを配置する方が簡単ですが、ここで興味がある場合は、アプリ全体を実行する簡単な方法があります:アスペクト指向プログラミング メソッド境界イベント

私の推測では、カットダウンされた再現プロジェクトには、TabPage1_Enter の後に発生するイベントがありません。実際のプロジェクトと同じように、何らかの形でテキスト ボックスからフォーカスを奪っています... Debug.Write の出力が表示されます。HTH

于 2011-08-22T07:03:08.257 に答える