1

更新が必要な Windows Mobile アプリケーション (C# 2.0) のステータス ダイアログを作成する必要があるため、MessageBox は使用できません。新しい Form クラスを作成し、サイズを変更して ShowDialog を呼び出そうとしましたが、常にフルスクリーンで表示されます (もちろん、タイトル バーは表示されません)。小さく表示する方法を理解できる唯一の方法は、FormBorderStyle を None に設定することですが、実際には境界線やタイトル バーがまったくありません。

メッセージ ボックス (タイトル バーと枠線付き) のように見せたいのですが、更新できるように実際にフォームを使用する必要があります。

これを行う方法のアイデアはありますか?

4

1 に答える 1

2

ここでの課題は、WinMoシェル自体です。明らかではないのは、フォームのキャプション(画面の上部)が実際には表示されているフォームのキャプションではないということです。これは完全に異なるアプリケーションです。したがって、フォームを「フロート」にするには、シェルがフォームの表示を処理する方法を覆す必要があります。手っ取り早い方法は、Form BorderStyleをnoneに設定することですが、そうするとキャプションバーが失われます。オプションは、OnPaintのFillRectとDrawStringを使用して手動で描画することです。それほど難しくはなく、P / Invokeシェナニガンは必要ありませんが、コントロールをレイアウトするときに新しいヘッダーを考慮する必要があります。

もう1つのオプションは、P / Invokeを使用して、フォームのスタイルビットを自分で操作することです。これはうまく機能しますが、ウィンドウの作成時にいくつかのビットを設定する必要があるため、コード内の正しい場所で行うように注意してください。また、シェルに注意してください。ビットを元に戻したい場合があるため、このメカニズムでは、より多くのテストと細部への注意が必要です。IMOはこれがより良いルートであり、私はそれについてここでより詳細にブログに書いています。そのブログエントリは、特にフローティングフォームに関するものではありませんが、スタイル操作については十分に説明しています。フルスクリーン以外のフォームの詳細については、こちらの他のブログエントリを参照してください

于 2008-10-28T15:20:31.307 に答える