1

次の手順を実行すると、アプリケーションのメインフォームがデザイナーで常に白くなります。

1)デザインモードでフォームを開きます(この時点ですべてのコントロールが表示されます)2)フォームのソースコードを表示します3)デザインビューに戻ります

上記の手順を実行した後、フォームのデザインモードでは何も表示されません(フォームも表示されません)。この問題は、アプリケーションの1つのフォームでのみ発生しますが、残念ながら、多くのロジックがあるメインフォームです。回避策は、常にフォームを閉じてデザインモードで再度開くことで、すべてのコンポーネントが再び表示されることを示します。使用可能なメモリが不足しているときに、設計者との不規則なエラーを経験しましたが、このフォームは常にこの症状を引き起こし、唯一のものです。これを引き起こしているものについてのアイデアはありますか?いつでも新しいフォームを作成して、すべてのコントロールとロジックを移動してみることができると思いますが、もっと簡単なオプションがある場合は、作業を避けたいと思います。

4

3 に答える 3

2

診断は、コントロールのPaintイベントまたはOnPaintメソッドが誤動作していることです。これらのメソッドはデザイン時に実行されるため、コントロールの正確な視覚的表現を取得できます。たとえば、デザイン時にPictureBoxのImageプロパティを確認できます。このようなペイントイベントがループでスタックすると、フォーム全体が適切にレンダリングされなくなります。単純なバグ以外に、典型的な理由は、コードがデザインモードの非標準のランタイム環境によって混乱していることです。DesignModeプロパティを使用して、そのようなコードが問題を引き起こさず、デザインモードで無効になっていることを確認します。

特に、自分で作成したコントロールではない場合は、動作に問題のあるコードを見つけることが課題になります。コントロールを1つずつ削除してトラブルメーカーを見つけるのではなく、Visual Studioの別のインスタンスを起動してデバッガーを使用し、[ツール]+[プロセスにアタッチ]を使用して最初のインスタンスにアタッチできます。

于 2012-09-03T15:52:01.167 に答える
0

個人的な経験から、これはVisual Studio 2003と2005の両方で、VBとC#のどちらを使用する場合でも発生する問題であることが確認できます。両方のバージョンに最新のサービスパックにパッチを適用し、Microsoftから直接修正プログラムを入手しましたが、どちらも問題を解決しませんでした。

Visual Studio 2003のVBの場合、コントロールの消失により、基になるデザイナーコードも削除されたため、バージョン管理システムから削除されたコードを復元する必要がありました。非常に面倒です。コードの変更を失うことが多く、最初からやり直す必要があるためです。

于 2012-09-04T10:17:22.067 に答える
0

次のリンクを確認する必要があります: https ://weblog.west-wind.com/posts/2019/Feb/14/WPF-Hanging-in-Infinite-Rendering-Loop?fbclid = IwAR23ZnUrz7buVpFLXOX2qQin1WcifQ6h280EO25URO74NTGDkTedx1TDR

このページからの引用は次のとおりです。

StarDefinitionsCanExceedAvailableSpaceオーバーライドの使用この設定は、新しいGridRendering動作をオーバーライドし、基本的にプロジェクトで.NET 4.7.xターゲットを使用して実行できるようにしますが、以前のバージョンで使用されていた古い動作を保持します。

アプリケーションのapp.configで設定できる構成設定があります。

<configuration>
     <runtime>
        <AppContextSwitchOverrides value="Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=true"
     />
    </runtime>
</configuration>

そのスイッチを使用すると、4.7.1を実行でき、どのスケーリングモードでもロックアップが表示されないことを確認できます。私の後

実行中のバージョンが4.6.2に戻っていたので、これを試すためにもう一度別のブランチで4.7.1に移動し、スイッチがアプリケーションを4.7.1でターゲットに実行できるようにしました。したがって、ハッキーな回避策があります。

ただし、これは回避策です。Microsoftによるこの「修正」は、グリッドレンダリングの割り当てを改善し、より正確なサイズ設定を提供し、パフォーマンスを改善し、メモリ使用量を削減します。紙の上ではこれは大きな改善ですが...まあ、副作用

この問題についてはあまり情報が見つからなかったので、この問題はあまり一般的ではないと思います。起動シーケンスには多くのウィンドウ操作があるため、MarkdownMonsterがこの問題を引き起こしていると思います。MMはメインウィンドウにウィンドウアニメーションと追加のレンダリングフレームを使用するMahAppsUIフレームワークを使用し、MM自体が初期レンダリングのためにウィンドウを画面外に移動し、ウィンドウが画面に収まらない場合は画面サイズとDPI設定に基づいてウィンドウサイズを調整しますまたは、それ以外の場合は画面外になります。IOW、最初のウィンドウを画面に表示するための少しの回転があります。これは、単純なWPFフォームよりもこのバグに遭遇する可能性が高いです。

したがって、すべてのアプリケーションがこれについて心配する必要があるとは思えませんが、4.7.x WPFアプリを使用している場合は、さまざまな解像度とスケールレベルで試して、どのように動作するかを確認することをお勧めします。

于 2020-07-05T10:45:05.497 に答える