Windows Mobile デベロッパー センター > Windows Mobile 向けアプリケーション開発 フォーラム > Windows Mobile – .NET Compact Framework (VB, C#) > VB2005のVB.NET2005において、WinsowsMobile5.0用アプリでLabelやbuttonが時々見られなくなることに関して
質問する質問する
 

質問VB2005のVB.NET2005において、WinsowsMobile5.0用アプリでLabelやbuttonが時々見られなくなることに関して

  • 2009年5月8日 22:46naoki_s0524 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    お世話になっております。
    VBでプログラムを作っていたのですが、以下の点が不明なため、解決策等を教えていただけませんでしょうか?

    開発環境
    Microsoft Visual Studio 2005
    Version 8.0.50727.762  (SP.050727-7600)
    Microsoft .NET Framework
    Version 2.0.50727 SP2

    インストールされている Edition: Standard

    Microsoft Visual Basic 2005


    ターゲット
    WindowsMobile5.0(OS 5.1.195)

    現象
    フォームの移動を、
            Me.Close()
            Dim f As Form = New HamForm_05
            f.Owner = Me
            f.Show()
    このような形で行っています。
    その際、いくつかのフォーム間を行ったりきたりする間にSQLServerCEにアクセスし、データを書き込むプログラムなのですが、
    不定期に、Labelやbuttonが表示されないことがあります。

    フォームの遷移がループできるため、
    ex. A->B->C->A->B-C-D->A
    (AはbuttonとLabel,BはLabelのみ,CはSQLServerCEに書き込み、Dはbuttonのみなど・・・)
    発生するときと、発生しないときがあり、大変困っております。

    また、フォームを作成しなおす(全く同じもの)と、表示が上手くいくこともありましたが、
    元の、表示されないフォームを消した途端に、新しいフォームも表示がおかしくなることがありました。。。

    遷移はできていますが、フォーム同士の遷移やりかたがまずいのでしょうか?

    お忙しいところ恐れ入りますが、ご回答よろしくお願いいたします。

    ==追記==2009.05.10
    追加で、以下のようなこともやってみました。
    自フォームを、Me.TopMost=trueにしてみる・・・×
    呼び出し側で、f.BringToFront()をしてみる・・・×
    Labelを追加してみる・・・2個目のLabelは表示されるが、1つ目のラベルが表示されない(2個目のLabelも同じ条件で作っています。designer.vbを見てもLabel名だけ違うだけの状態・・・のはず)・・・×
    Labelの名前を違うものにしてみる・・・Lablel1をlabelaとしてみましたが、1回目は表示されましたが2回目立ち上げたときに表示されず・・・×
    Labelの位置をずらしてみる・・・×
    Labelの大きさをずらしてみる・・・×

    さらに・・・
    フォームさえも表示されないこともありました。。。
    X->(showDialog)->A->(show)->B->(show)->C->(show)->D->(show)->E(表示されず、Xが見える:10病後にFに自動で遷移)->(show)->F->(show)->A->(dispose,close)->X
    Xのベースからは、すべてモーダルで起動し、AからFまでは、close,showを繰り返すと考えていただければと思います。

    よろしくお願いします。


すべての返信

  • 2009年5月18日 2:20高橋 忍MSFT, モデレータユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    フォームの遷移方法ですが以下のようにされているということですが

            Me.Close()
            Dim f As Form = New HamForm_05
            f.Owner = Me
            f.Show()

    はじめに自身のフォームを閉じておりますが、これはなぜでしょうか?
    そして閉じたはずの自身のフォームを新しいフォームの親に設定しているのはなぜでしょうか?(もしくは問題ありませんでしょうか)
    すぐに自分のフォームが閉じられるわけではないと思いますが、新しいフォームを作成中のどこでフォームが閉じられて処理が中断されてしまうかわかりません。


    Form X

     Dim frmA As New FormA
      frmA.Owner = Me
      frmA.ShowDiallg

    Form A~F

     遷移処理(こちらは FormBへの移動処理)

     Dim frmB As New FormB
      frmB.Owner = Me.Owner
      frmB.Show
      Me.Close

     Close 処理 (FormXに戻る)
      
      Me.Owner。Show
      Me.Close

    新しいFormを作ったら常に親を自分ではなく FormXにすることで、自身を閉じることができます。
    また、Formを閉じたらどこからでもFormXに戻れます。
    マイクロソフト エバンジェリスト 高橋 忍