none
Compact Framework 2.0 でのフォームキャプションの非表示 RRS feed

  • 質問

  • お世話になります。

    Windows Modile向けのアプリを開発しています。
    その中で、フォームのサイズを変更して、メッセージボックスのようにして表示しています。

    このとき小さくしたフォームのキャプションを表示したくないので、

       Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
       Me.MaximizeBox = False
       Me.MinimizeBox = False

    としています。

    しかし、Compact Framework 1.1 だと、
    こうすればフォームのサイズを変更でき、キャプションが表示されないのですが、
    Compact Framework 2.0 だとフォームのサイズは変更できるのですが、
    キャプションが表示されてしまいます。

    これを表示させない方法はないでしょうか。
    よろしくお願いいたします。

     

     

    2007年1月11日 14:18

回答

  • 症状は理解できました。
    原因は別に考えるとして、対策は、フォームを使わないようするしかないと思います。
    全画面で表示しているフォームの中に、メッセージダイアログに利用するためのパネルを配置し、普段は不可視にするか、表示エリア外に置いておき、必要に応じて表示させ、そのとき背後にあるコントロールを全部Enabled=Falseにしてしまえば、まったく同じUIが実現可能ではないでしょうか。

    原因についての想像ですが、ShowDialogメソッドが怪しい気がします。そのフォームのFormBorderStyleプロパティの設定に関係なく、タイトルバーを最前面表示させているのではないでしょうか。
    ShowDialogメソッドで開くとモーダルになりますので、自分以外のウィンドウは操作できません。そのため、タイトルバー部分を操作する対策は不可能です。
    Showメソッドで開けば、タイトルバー部分を何とかできるかもしれませんが、結局背景となるフォームの操作可能なコントロールを全部Enabled=Falseにしなきゃならなくなるので、それなら頭記の対策のほうが、簡単だと思います。
    2007年1月17日 1:01

すべての返信

  • こんにちは。

     はやま さんからの引用
    小さくしたフォームのキャプションを表示したくない

    スタートボタンの横のタイトルバー部分に表示されるテキストのことだと思うのですが、これは Compact Framework 1.0 でも 2.0 でも、フォームの状態に関係なく表示されるのが普通です。勘違いでしょうか。

    表示させないためには、対象となるフォームの Text プロパティの内容を、空の文字列にするしかないと思いますが。
    2007年1月15日 12:11
  • すみません。私の言葉足らずでした。

    私が表示したくないのは、キャプションに書かれるテキストではなく、
    キャプションバー(タイトルバー)自体です。

    また、設定していた項目は以下の4つでした。

      Me.ControlBox = False ← 追加
      Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
      Me.MaximizeBox = False
      Me.MinimizeBox = False


    アプリでやっていることは、
    全画面表示しているフォームから指定した大きさのフォームを開くということです。
    (メッセージボックスの代わりみたいなものです)
    このとき、新しく開いたフォームのキャプションバーが表示されてしまって、
    スタートボタンや時計などが見えてしまい、デザインが悪くなってしまってます。
    これをキャプションバーが表示されないようにして、
    常に一番下のフォームが全画面で表示されている状態にしたということです。

    実際にCF1.1ではこれが実現できていました。
    そのアプリをCF2.0にアップデートしたら(ソースはまったくいじってません)、
    突然キャプションバーが表示されるようになったのです。


    何か対策はありますでしょうか。

    2007年1月16日 10:45
  • 症状は理解できました。
    原因は別に考えるとして、対策は、フォームを使わないようするしかないと思います。
    全画面で表示しているフォームの中に、メッセージダイアログに利用するためのパネルを配置し、普段は不可視にするか、表示エリア外に置いておき、必要に応じて表示させ、そのとき背後にあるコントロールを全部Enabled=Falseにしてしまえば、まったく同じUIが実現可能ではないでしょうか。

    原因についての想像ですが、ShowDialogメソッドが怪しい気がします。そのフォームのFormBorderStyleプロパティの設定に関係なく、タイトルバーを最前面表示させているのではないでしょうか。
    ShowDialogメソッドで開くとモーダルになりますので、自分以外のウィンドウは操作できません。そのため、タイトルバー部分を操作する対策は不可能です。
    Showメソッドで開けば、タイトルバー部分を何とかできるかもしれませんが、結局背景となるフォームの操作可能なコントロールを全部Enabled=Falseにしなきゃならなくなるので、それなら頭記の対策のほうが、簡単だと思います。
    2007年1月17日 1:01
  • Alwaysさん、ありがとうございます。


    フォームでは厳しいですか。

    パネルを使う方法も考えてました。
    ただ、特定のフォームだけから呼び出されるわけではないので、
    呼び出し元のフォームのコントロールを全部無効にするのがめんどくさく、
    フォームでやろうとしました。

    でも、実現方法がわからない以上、できる方法でやるしかなさそうですね。

    それにしても、CF1.1と2.0で何が変わったのでしょう?
    この部分だけは1.1の仕様で動いてほしいです。

    2007年1月17日 4:40