tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル3つのForm間でのShowとClose
記事No1790
投稿日: 2005/06/05(Sun) 09:26
投稿者ワッタン
[OSのVer]:WindowsXP SP2    [VBのVer]:VB.NET2003
はじめまして。

現在3つのFormA,B,Cを使って、A→B→C→Aという
流れでFormを表示し、使わないFormをCloseさせる
という処理をしようとしています。

(A→B間)
.Show
me.Menu=nothing

(B→C間)
.ShowDialog
me.Dispose
me.Menu=nothing

(C→A間)
me.close
me.Menu=nothing
として表示はうまくいくのですが、Cにカウンタを
表示させ、何度も上の処理を繰り返していると、
カウンタが遅くなってしまいました。画面表示とClose
の仕方がおかしいのか、Formのクリアの仕方がおかしいのか
よく分かりません。どなたかご教授いただければと思います。


  

[ツリー表示へ]
タイトルRe: 3つのForm間でのShowとClose
記事No1808
投稿日: 2005/06/09(Thu) 12:31
投稿者ぴエール
[OSのVer]:Windows    [VBのVer]:VB.NET  
> [OSのVer]:WindowsXP SP2    [VBのVer]:VB.NET2003
> はじめまして。
>
> 現在3つのFormA,B,Cを使って、A→B→C→Aという
> 流れでFormを表示し、使わないFormをCloseさせる
> という処理をしようとしています。
>
> (A→B間)
> .Show
> me.Menu=nothing
>
> (B→C間)
> .ShowDialog
> me.Dispose
> me.Menu=nothing
>
> (C→A間)
> me.close
> me.Menu=nothing
> として表示はうまくいくのですが、Cにカウンタを
> 表示させ、何度も上の処理を繰り返していると、
> カウンタが遅くなってしまいました。画面表示とClose
> の仕方がおかしいのか、Formのクリアの仕方がおかしいのか
> よく分かりません。どなたかご教授いただければと思います。
>
>
>   

【いくつか考えられることを記入いたします。】
1、> Cにカウンタを表示させとはCが開いた回数をカウントする感じですか?
上記の場合、カウンタ変数のメモリが増えてるのでは?

2、CをDisposeしていないのはなぜですか?

3、(B→C間)でShowDialogした直後にme.Disposeをしているのですが、
ShowDialogはBが触れなくなりCが触れる状態になるためBをDisposeしたと
してもB自身のメモリがうまく開放されないのでは?

※.NET自身がVB6等と違い余計なメモリを消費する傾向があります。

[ツリー表示へ]
タイトルRe^2: 3つのForm間でのShowとClose
記事No1839
投稿日: 2005/06/19(Sun) 22:58
投稿者ワッタン
[OSのVer]:Windows    [VBのVer]:VB.NET  
> [OSのVer]:Windows    [VBのVer]:VB.NET  
> > [OSのVer]:WindowsXP SP2    [VBのVer]:VB.NET2003
> > はじめまして。
> >
> > 現在3つのFormA,B,Cを使って、A→B→C→Aという
> > 流れでFormを表示し、使わないFormをCloseさせる
> > という処理をしようとしています。
> >
> > (A→B間)
> > .Show
> > me.Menu=nothing
> >
> > (B→C間)
> > .ShowDialog
> > me.Dispose
> > me.Menu=nothing
> >
> > (C→A間)
> > me.close
> > me.Menu=nothing
> > として表示はうまくいくのですが、Cにカウンタを
> > 表示させ、何度も上の処理を繰り返していると、
> > カウンタが遅くなってしまいました。画面表示とClose
> > の仕方がおかしいのか、Formのクリアの仕方がおかしいのか
> > よく分かりません。どなたかご教授いただければと思います。
> >
> >
> >   
>
> 【いくつか考えられることを記入いたします。】
> 1、> Cにカウンタを表示させとはCが開いた回数をカウントする感じですか?
> 上記の場合、カウンタ変数のメモリが増えてるのでは?
>
> 2、CをDisposeしていないのはなぜですか?
>
> 3、(B→C間)でShowDialogした直後にme.Disposeをしているのですが、
> ShowDialogはBが触れなくなりCが触れる状態になるためBをDisposeしたと
> してもB自身のメモリがうまく開放されないのでは?
>
> ※.NET自身がVB6等と違い余計なメモリを消費する傾向があります。

[ツリー表示へ]
タイトルRe^2: 3つのForm間でのShowとClose
記事No1840
投稿日: 2005/06/19(Sun) 23:10
投稿者ワッタン
返事が遅くなってすみません。
ピエールさん返信ありがとうございました。

(B→C間)

C.Showdialog
C.Dispose
C=nothing

(C→B間)

me.close
としてCフォームをクローズした後、CをDispose、Nothing処理するようにし、
とりあえずC→Bとしてから、BフォームにB→Aと戻るためのボタンを作って
B→A処理をし、CからAへ戻るようにして解決させました。

[ツリー表示へ]
タイトルRe^3: 3つのForm間でのShowとClose
記事No1841
投稿日: 2005/06/20(Mon) 09:49
投稿者じゃんぬねっと
参照先http://jeanne.wankuma.com/
こんにちは、じゃんぬ です。

> C=nothing

これ、特に意味はないです。
本来は、

Dim hForm1 As Form1

Try
    hForm1 = New Form1()
    hForm1.ShowDialog()
Finally
    If Not hForm1 Is Nothing Then
        hForm1.Dispose()
    End If
End Try

こうすべきです。

VB2005 からは、C# 同様に Using が使えるので嬉しいですね。

[ツリー表示へ]