0

全て、

奇妙な動作を開始したアプリケーションにTabControlがあります。いくつかの背景...

このプログラムはVB6からVB.NET2008に変換され、クラス名を使用してフォームを参照するために使用されました。言い換えれば、frmFooというフォームクラスがあるかもしれません。プログラムのコードには、次のように表示されます。

frmFoo.Show()

また

frmFoo.UserDefinedProperty = True

最近のいくつかの変更中に、次のようなフォームのインスタンスを表す変数を作成しました。

Public MyForm as frmFoo

MyForm = New frmFoo
MyForm.Show()

その際、フォームのLoadイベントハンドラーからコードを削除し、フォームのコンストラクターに配置しました。

フォームが読み込まれるとき、またはドキュメントが読み込まれ、TabControlの選択されたインデックスに影響を与える必要がある場合、次のようなものは必ずしもSelectedIndexChangedイベントを発生させるとは限りません。

MyForm.tbsForm.SelectedIndex = ValueReadFromFile

...また...

MyForm.tbsForm.Tabs(ValueReadFromFile).Select

言葉遣いで申し訳ありませんが、まだまだあります。フォームを開いてTabControlを見て、正しく設定されていることを確認すると、すべてが想定どおりに機能します。誤動作しているTabControlは別のTabControlに含まれているため、親のTabControlをクリックして表示する必要があります。私がそれを見てテストを実行できれば、テストは常に機能します。それが表示されず、テストを実行できない場合、最初に実行したテストではイベントは発生しません。...ハイゼンベルグ博士のページング...

値を変更したり、画面に表示したりして、最初にコントロールを初期化する必要があるかのようです...これでは完全に迷子になります。これは私が今まで見た中で最も珍しい行動です。そして、変数を使用してフォームを表現し、Loadイベントコードをフォームコンストラクターに配置する前は、すべてが完全に機能していました。

誰かが私を助けることができますか、または少なくとも私の悲惨さから私を追い出すことができますか?SH

-------------------------------------------------- ------------編集#2
動作の変動性の一部を排除しようとした後、テストを実行しました。しかし、私は以前に述べた振る舞いを確認したかった。

プログラムを開いてファイルを読みました。このファイルには、イベントハンドラーをトリガーするはずの値が含まれていました。コントロールを表示せずに、イベントを発生させずにタブコントロールのSelectedIndexプロパティを変更できます。

プログラムを再度閉じて、再開しました。今回は、子タブ(私が関係しているイベントのタブ)が表示されるようにする親タブを選択しました。次に、親コントロールで別のタブを選択しました。これは、子コントロールが表示されなくなったことを意味します。以前と同じファイルを開くと、イベントが発生しました。

コントロールが再描画されたこと、または親タブが表示されたことを確認するフラグを実装したいと思います。フラグが設定されていない場合、コードでイベントを発生させる必要があるかもしれません。

プログラムがフォームをクラス名で参照し、フォームのコントロールの配置の多くがloadイベントで行われたときに、すべてが機能したことを繰り返し述べたいと思います。これで、プログラムが変数を作成し、コントロールの配置がフォームのコンストラクターで行われます。これは私が抱えている問題と関係があると確信していますが、その方法がわかりません。共有する知恵はありますか?

4

1 に答える 1

0
MyForm.tbsForm.SelectedIndexChanged = ValueReadFromFile

あまり意味がありません。SelectedIndexChanged イベントにハンドラーを割り当てようとしていますか? または ValueReadFromFile はタブの名前ですか?

つまり、A と B という 2 つのタブ コントロールがあるということです。タブ コントロール B は A のタブ内に含まれており、A がタブ コントロール B を含むタブ ページを選択していない限り、B の SelectedIndexChanged イベントプログラムでタブを変更すると起動しませんか?

子タブ コントロール内でタブを選択しようとしたさまざまな方法と、このコードが実行されているのはいつですか?

于 2010-12-21T06:28:28.563 に答える