- - PR -
表示が遅い
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-02 01:03
あけましておめでとうございます。
さて、VB.NETでユーザコントロールをたくさん開発していますが、Show,Showdialogすると、画面を表示するのが遅いです。 VB6.0ではLoadステートメントがありましたが、.NETでは存在しないため、Loadingしておくことができないため、実行時に非常に遅く感じます。 何かいい方法はないでしょうか? 知っている方がいたらお願いします。 | ||||
|
投稿日時: 2004-01-02 02:39
こんにちわ。諸農です。
VB6.0のことは全然知らないのですが、 「VB6.0でのLoadステートメント」が、オブジェクトのインスタンス化を 意味しているのでしたら、大域変数にでもインスタンス化しておいて、 Show/ShowDialogするという方法が思いつきますが、いかがでしょうか。 ちなみに、遅いと言われているコードのShow/ShowDialogの前後のコードって どんな感じになっているのでしょうか。 もしよかったらアップしてみてください。 より多くのコメントが期待できるかもしれません。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2004-01-03 19:50
Loadステートメントが何を指しているのかわかりませんが、FormのLoadイベントなら、.NET Frameworkにもあります。
それよりも、処理の流れを箇条書きにして頂けると、レスもつけやすいのですが。。。 例:VB6.0のとき フォームのロードステートメント ・フォームBの生成 ・フォームBは非表示にしておく フォームAのボタンイベント ・フォームBを表示 ・フォームAを非表示 | ||||
|
投稿日時: 2004-01-04 22:52
DLLが複数あり特別なコードというわけではないので、非常に書きづらいのですが、・・・
基本的にメインEXEがひとつあり、そこにDLL(A)を貼り付け、そのDLL(A)内のフォームをShowDialogで呼び出します。そのA内のフォームには作成したユーザコントロールとテキストボックス等が10数個貼り付けてあります。 | ||||
|
投稿日時: 2004-01-05 00:45
こんにちわ。諸農です。
「DLLを貼り付けている」と言う状況が良くわからないのですが。。 System.Windows.Forms名前空間のFormクラスはSystem.Windows.Forms.dllに 含まれていますが、このフォームクラスを使うイメージと同じ事を指している のでしょうか?メインEXEはDLLのフォームをどう使っているんでしょうか。。 というか、このときのDLLって、Win32のDLLでしょうか?それとも.NETのアセンブリかしら? ちなみに、最初の投稿に書かれている「遅い」は何と比較して「遅い」のでしょうか? 根本的な部分で意識を合わせていないと、とんでもないコメントが付きそうですね。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2004-01-05 06:29
それでは保守ができないのでは? 特別とは、何と比較して特別(特別ではない)なのでしょう? Loadステートメントって、もしかしてFormのロードではなく、DLLのロード? DLLを前もってロードしておくことができない(その方法がわからない)ので、使いたい場面でいちいちロードするため、時間がかかるということ? #というように、あいまいな書き方をすると、 #読む人に都合がいいように解釈されるのです [ メッセージ編集済み 編集者: Jitta 編集日時 2004-01-05 09:23 ] | ||||
|
投稿日時: 2004-01-05 10:46
ちょっとLOADステートメントについての認識がずれてるような気がするので・・・(って僕がずれてるだけだったらごめんなさい。) VB6でいう Load [フォーム名] といった記述が.NETでは出来ないから遅いなぁ。 って言ってるのかなぁ。 なんて・・・。(違ってたらすいません。) | ||||
|
投稿日時: 2004-01-05 11:53
VB6.0 ではフォームの初期化はフォームがロード(Load イベントが実行)されるときに行いますが、 .NET(というよりは VS.NET の Windows フォームデザイナによって生成されるコード)では コンストラクタで初期化を行います。 つまり、諸農さんがおっしゃっているようにインスタンスを生成しておいて、 それをグローバルな変数に格納して使うだけでいいと思います。 デザインパターンの Singleton パターンを適用するとより良いかも知れません。 |