tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル遅延表示なんてできますか?
記事No3261
投稿日: 2006/03/12(Sun) 23:29
投稿者MO
[OSのVer]:Windows    [VBのVer]:VB2005.NET  
はじめまして、MOといいます。

コントロールを表示⇔非表示にすると、パラパラと消えて行きすっきりしません。
VBでは遅延表示(最初に表示を止めて、後で一括表示する)みたいなことは
出来ないのでしょうか?
また、別の方法があれば教えてください。

=====こんなことやっています=============================
1.背景画像付のテキストボックスを設定したユーザーコントロールを作成(UCLT)
2.作成したユーザーコントロールを画面に貼り付け(20個位)
  ※配列化したクラス変数(Dim CS_UCTL() As UCLT)に入れて
   画面に貼り付けてます。
3.その後、画面を表示
4.別のボタンにより、画面に貼り付けたユーザーコントロールの
  表示制御(表示⇔非表示)をする
  ※ここの表示がパラパラとなってしまう・・・
=========================================================

宜しくお願いします

[ツリー表示へ]
タイトルRe: 遅延表示なんてできますか?
記事No3262
投稿日: 2006/03/12(Sun) 23:49
投稿者YAS
MOさん,こんばんは。

>4.別のボタンにより、画面に貼り付けたユーザーコントロールの
>  表示制御(表示⇔非表示)をする

これはコントロールのVisibleで切り替えているのでしょうか?
そうだとすると効果があるかわかりませんが,ダブルバッファを有効にしてみたらどうでしょうか。

        SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
        SetStyle(ControlStyles.AllPaintingInWmPaint, True)

また,Controls.add,RemoveをしているのならSuspendLayout(),ResumeLayout()を試してみたら
どうでしょうか。

どちらも効果があるかわかりませんが,試してみてください。

[ツリー表示へ]
タイトルRe^2: 遅延表示なんてできますか?
記事No3277
投稿日: 2006/03/14(Tue) 20:01
投稿者MO
[OSのVer]:Windows    [VBのVer]:VB.NET  
> MOさん,こんばんは。
>
> >4.別のボタンにより、画面に貼り付けたユーザーコントロールの
> >  表示制御(表示⇔非表示)をする
>
> これはコントロールのVisibleで切り替えているのでしょうか?
> そうだとすると効果があるかわかりませんが,ダブルバッファを有効にしてみたらどうでしょうか。
>
>         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
>         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
>
> また,Controls.add,RemoveをしているのならSuspendLayout(),ResumeLayout()を試してみたら
> どうでしょうか。
>
> どちらも効果があるかわかりませんが,試してみてください。

レスが遅くなり、すみませんでした。
色々調べて、やってみました。

1.SuspendLayout→ResumeLayout:少しパラパラが残ります
2.SetStyle(フォームのDoubleBuffered プロパティを true):こっちの方が表示が早かったです。
3.2&3の組み合わせ:全然チラツキがなくなりました。
  因みに、ResumeLayoutをApplication.Idle時に実行すると、さらに早い気がしました。

まだまだ知らないことが多いです・・・
ありがとうございました。大感激です!! m(__)m

[ツリー表示へ]