- PR -

表示が遅い

投稿者投稿内容
ぜーた
常連さん
会議室デビュー日: 2003/09/21
投稿数: 23
投稿日時: 2004-01-02 01:03
あけましておめでとうございます。

さて、VB.NETでユーザコントロールをたくさん開発していますが、Show,Showdialogすると、画面を表示するのが遅いです。
VB6.0ではLoadステートメントがありましたが、.NETでは存在しないため、Loadingしておくことができないため、実行時に非常に遅く感じます。
何かいい方法はないでしょうか?

知っている方がいたらお願いします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 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/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-03 19:50
 Loadステートメントが何を指しているのかわかりませんが、FormのLoadイベントなら、.NET Frameworkにもあります。

 それよりも、処理の流れを箇条書きにして頂けると、レスもつけやすいのですが。。。


例:VB6.0のとき
フォームのロードステートメント
 ・フォームBの生成
 ・フォームBは非表示にしておく

フォームAのボタンイベント
 ・フォームBを表示
 ・フォームAを非表示
ぜーた
常連さん
会議室デビュー日: 2003/09/21
投稿数: 23
投稿日時: 2004-01-04 22:52
DLLが複数あり特別なコードというわけではないので、非常に書きづらいのですが、・・・

基本的にメインEXEがひとつあり、そこにDLL(A)を貼り付け、そのDLL(A)内のフォームをShowDialogで呼び出します。そのA内のフォームには作成したユーザコントロールとテキストボックス等が10数個貼り付けてあります。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 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/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-05 06:29
引用:

ぜーたさんの書き込み (2004-01-04 22:52) より:

DLLが複数あり特別なコードというわけではないので、非常に書きづらいのですが、・・・


 それでは保守ができないのでは?
 特別とは、何と比較して特別(特別ではない)なのでしょう?


 Loadステートメントって、もしかしてFormのロードではなく、DLLのロード?
 DLLを前もってロードしておくことができない(その方法がわからない)ので、使いたい場面でいちいちロードするため、時間がかかるということ?
#というように、あいまいな書き方をすると、
#読む人に都合がいいように解釈されるのです

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-01-05 09:23 ]
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-01-05 10:46
引用:

Jittaさんの書き込み (2004-01-03 19:50) より:
 Loadステートメントが何を指しているのかわかりませんが、FormのLoadイベントなら、.NET Frameworkにもあります。



ちょっとLOADステートメントについての認識がずれてるような気がするので・・・(って僕がずれてるだけだったらごめんなさい。)

VB6でいう
Load [フォーム名]
といった記述が.NETでは出来ないから遅いなぁ。
って言ってるのかなぁ。
なんて・・・。(違ってたらすいません。)
架空兎
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 78
お住まい・勤務地: さいたま氏
投稿日時: 2004-01-05 11:53
引用:

「Load ステートメント」 - MSDN ライブラリ Visual Studio 6.0 より:

Microsoft Visual Basic で Form オブジェクトをロードすると、フォームのプロパティが初期値に設定され、Load イベント プロシージャが実行されます。アプリケーションを起動すると、アプリケーションのスタートアップ フォームが自動的にロードされ、表示されます。


VB6.0 ではフォームの初期化はフォームがロード(Load イベントが実行)されるときに行いますが、
.NET(というよりは VS.NET の Windows フォームデザイナによって生成されるコード)では
コンストラクタで初期化を行います。

つまり、諸農さんがおっしゃっているようにインスタンスを生成しておいて、
それをグローバルな変数に格納して使うだけでいいと思います。

デザインパターンの Singleton パターンを適用するとより良いかも知れません。

スキルアップ/キャリアアップ(JOB@IT)