Windows フォームでウィザード フレームワークを構築しようとしています。このサイトや他のサイトから多くの有用なヒントを集めることができたので、成功に非常に近づきました. ただし、ウィザードの最初のページ以外のタブ ページに ErrorProvider を表示すると問題が発生します。
私のウィザード コントロールは UserControl です。これには、TabControl から派生させたカスタム タブ コントロールが含まれているため、タブを非表示にし、キーを押してタブ間を移動しようとする試みを無視できます。また、コントロールの下部にある [戻る]、[次へ]、[終了]、[キャンセル] ボタンの通常のコレクションも含まれています。
リフレクションを使用して、[次へ] ボタンをクリックしたときに、ウィザード コントロールに属する特定の TabPage で検証イベントを発生させました。( TabControl全体を検証するのではなく、現在アクティブなページのみを検証します。) これを行うと、デバッガーで、現在のタブ ページのコントロールの検証ルーチンが正しく呼び出されていることがわかります。特定のコントロール (この場合は TextBox) にアタッチした ErrorProvider を有効なエラー メッセージと共に呼び出しました。検証ルーチンで CancelEventArgs の Cancel を true に設定すると、リフレクション メカニズムを使用するコードによって検出され、失敗してタブを変更しないことがわかります。そして、検証に失敗したコントロールにフォーカスを設定しました。
したがって、すべてがうまく機能しているように見えます。
残念ながら、最初のタブ ページを表示しない限り、ErrorProvider の明るく点滅するアイコンは表示されません。他のすべてのタブ ページでは、メッセージはまったく表示されません。
私は困惑しています。何かご意見は?役立つ場合は、コード スニペットを提供できます。
ありがとう!