2017-03-08 11 views
0

私のプロジェクトにDevexpress winformを使用しています。簡単に3つのフォームがあります。最初はMainFormで、MdiParentを使用し、2番目はに法律に関する記事を使用したFormArticlesです。そして、最後は、pdfViewerコントロールに選択された記事を閲覧したFormArticleViewです。 documentManagerSplashScreenManagerを使用して、Mdi Childフォームと記事をMdi ChildフォームFormArticlesのいずれかに読み込むことができました。ここに私のコードは次のとおりです:Devexpress Winforms - あるフォームから別のフォームへの遷移中にフォームが破損する

public prjLibrary() 
    { 
     InitializeComponent(); 
     var frm = new FormArticles{ MdiParent = this, Dock = DockStyle.Fill }; 
     frm.Show(); 
    } 

フォームが別のものに変わる間に、フォームが破損し、負荷の後に修正されます。ここに私のスクリーンショットがあります: enter image description here ここに固定ビューがあります: enter image description here フォームの遷移中に骨折したビューを修正するにはどうしたらいいですか?

+0

フォームのLoadイベントからロードしようとしましたか?それはあなたの問題を解決することがあります試してみてください。 –

答えて

1

これは、最初のスクリーンショットのフォームにフォーカスが当たったときに、コントロールをPaintイベントでレンダリングする必要があるためです。これはしばらく時間がかかるようですが、骨折したテキストが、根底にあるコントロール(ラジオボタン、テキストボックス、ラベル)が配置されていると思われる四角形で表示されていることがわかります。だから、彼らはまだレンダリングされていないし、他の呼び出しがスレッドをブロックしている間に行く準備ができていない。問題は、mainFormのコンストラクタで新しいフォームを作成することだと思います。

とにかく、レスポンスを待っているUIを持つバックグラウンドスレッドで重い作業(コントロールのペイントを妨げるように見える)を実行することをお勧めします。これを行うのが難しい場合は、UIがユーザーに表示された後に実行してください。これは、OnLoadまたはOnShownイベントであってもよい。

ビジネス層のコードをUIレイヤーに書き込むことはお勧めしませんが、ここでは問題にはならないようです。

関連する問題