0

.NET Compact Framework、C#、. Net 3.5、Visual Studio2008での作業。同じプロジェクトのWindowsMo​​bileデバイスとCEデバイスをターゲットにします(これはCEアプリであり、両方のタイプのデバイスで実行されます)。

ShowDialogを使用して表示する必要のあるフォームがあります。フォーム自体は、「読み込み中...」というメッセージが表示された空白の画面です。フォームが画面に表示されたら、同じスレッドで別のコードチャンクを実行して、ShowDialogを使用して別のフォームをポップアップする必要があります。これにより、「ロード中」画面が新しい画面の親になります。

このシナリオが間違っているとか、showdialogを使用すべきではないと言わないでください。私たちはチームとしてそれを経験してきましたが、これは他の多くの問題を解決するため、アプリを作成する方法です。

...ただし、このシナリオの問題は、コンパクトなフレームワークでもShowedが表示されないことです。そのため、このイベントにコードを入れてこれを行うという通常のトリックを実行することはできません。

他の人はコンパクトなフレームワークでこのニーズをどのように解決しますか?それが役に立ったら、私はOpenNetCFライブラリを持っています...そこに役立つものはありますか?

4

2 に答える 2

0

さて、これは間違っているので、ShowDialogを使用するべきではないという私の非常に強い衝動に抵抗します。まだ言っていないので、何が起こっているのか見てみましょう。

アプリは、ある時点でApplication.Runを呼び出します。これにより、Windowsイベントをシステム内の適切なWindows(コントロール)にディスパッチするメッセージポンプがセットアップされます。

ShowDialogを呼び出すと、システムは別の一時的なメッセージポンプを設定します。これは、このポンプに入ってくるWindowsイベントが他のコントロールの外部にディスパッチされないことを意味します(これがモダリティを取得する方法です)。

ここで、その上にさらに別のダイアログをポップする必要があると言っていますが(つまり、さらに別のポンプを作成する)、最初のダイアログ(親フォーム全体ではない)にある種の初期化コードが表示された後に起動する必要があります。

これはすべて正しいですか?もしそうなら、私が見るだろう2つのルートがあると思います。まず、最初のダイアログでOnActivatedをオーバーライドする方法を見ていきます。ShowDialogを使用しているので、Shownイベントとほぼ同義だと思います。

それでも希望どおりの結果が得られない場合は、最初のダイアログにメッセージウィンドウを追加して(またはSDFのNativeWindowを使用してサブクラス化して、受信するすべてのWindowsメッセージを調べて独自の表示を提供します。イベント。

于 2010-05-19T21:13:18.463 に答える
0

ブール値を使用してformactivateを使用して、作業が完了したかどうかを確認することになりました。

于 2010-06-15T14:11:49.797 に答える