1

約 332 個のテキスト ボックスが読み込まれるタブを読み込むプログラムがあります。新しいタブをロードするとき、タブが表示されるまでに 2 ~ 3 秒の遅延があります。サスペンドとレジュームを試みましたが、スレッド化も調べましたが、winform は 1 つのスレッドしか使用できないことがわかりました。

別のスレッドでテキスト ボックスを作成し、それらをメイン フォームに追加する方法や、332 個のテキスト ボックスをより適切に作成する方法があるかどうか疑問に思っていました。

ご協力いただきありがとうございます。

4

3 に答える 3

3

レイアウトによっては、テキスト ボックスを DataGridView に置き換えるか、スクロール時にテキスト ボックスをある種の continous-control で読み込むことを強くお勧めします。主なボトルネックはハンドルの作成です。winform では、各コントロールが独自のハンドル (ラベルも含む) を取得し、このように大量に使用すると、実際にパフォーマンスの問題が発生する可能性があります。

datagridview がオプションでない場合は、コミュニティが代替案を検討できるように、レイアウトに関する詳細情報 (スクリーンショットなど) を提供していただけますか。別のスレッドでテキストボックスを作成すると、追加しようとすると問題が発生しますが、必要な場合にのみ作成できます。

于 2012-07-02T08:43:38.330 に答える
1

シンプル: 300 個のテキスト ボックスを使用しないでください。一度に使用できるテキスト ボックスは1 つだけです。残りのデータは描画するだけで、ユーザーが編集したい場合は、編集コントロールを作成します。これはまさにグリッドの仕組みなので、グリッドまたは同様のコントロールを使用することをお勧めします。

于 2012-07-02T08:46:55.483 に答える
0

私もこの問題を抱えていましたが、以前にアクティブ化されていないタブのコントロールの初期化コードにさらに影響を与えます。

私の回避策は、「読み込み中...」スプラッシュでプログラムをブロックし、プログラムでタブをクリックして、コントロールが読み込まれる/アクティブになるようにすることです。これが完了すると、タブページの再表示にそれほど時間はかかりません。

1 つのタブ内のコントロールの数を減らすことを検討したい場合があるという点で、私は他の人に同意します。

于 2012-07-02T08:45:04.627 に答える