ループの反復ごとにテキストボックスを追加すると思います...可能であれば、すべてを変数に格納しTextBox
、ループの終了後に1回追加します。VB6では、テキストボックスにテキストを表示するのに時間がかかります。
編集:さらに調査とテストを行った結果、コントロールの長さが最大になると、文字列をText
プロパティに直接割り当てるパフォーマンスが大幅に低下するという結論に達しました。私のPCの最大値は、 MSDNにTextBox
よると、何らかの理由で65535です。
Windows NT 4.0、Windows 2000、Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server、Windows XP Home Edition、Windows XP Professional x64 Edition、Windows Server 2003プラットフォーム注:単一行テキストボックスコントロールの場合、MaxLengthプロパティが設定されている場合0まで、ユーザーが入力できる最大文字数は2147483646、または使用可能なメモリに基づく量のいずれか小さい方です。
基本的に、何が起こっているように見えますか。TextBox
各反復にテキストを追加し続けると、最大に達するまでそれほど遅くはありません。さらに不可解なことに、最大値を超えてテキストを追加しようとすると、エラーは発生しませんが、パフォーマンスは大幅に低下します。
私のテストループでは、0から12773になります。これは次のとおりです。
Text2.Text = Text2.Text + CStr(a) + " "
したがって、ループが4秒で完了すると、Text2.Text
は65534文字の長さになります。ここで、ループを2倍にして最大許容長を超えると、TextBox
完了するまでに3倍の時間がかかります。
12773-4秒
12773*2-16秒
これに気付いた後、私の最初の考えは、をに置き換えることでしTextBox
たRichTextBox
。しかし、後者のパフォーマンスはさらに悪くなります。これは、反復ごとに更新することを前提としています。
あなたはジレンマに悩まされているようです-ループが完了した後に一度だけパフォーマンスが遅くなるか、テキストボックスを更新するようにコードを変更します。さらに、TextBox
の最大長の制限により、RichTextBox
またはこの目的に応じて、または他のオブジェクトに切り替えることをお勧めします。
私の発見がお役に立てば幸いです。これらの小さなプログラミングの癖をすべて見つけるのは確かに楽しかったです。