2011-09-28 12 views
2

私はWinformsを使用してGUIを開発しています。大部分のテスト用コンピュータですべてがうまく見えます(UIは同じ方法で、したがってGUIが開発されたPCに表示されます)。しかし、1台のノートパソコンでは、いくつかの要素が正しく表示されない(間違ったサイズや再描画の問題)ことがあります。Winformsアプリケーションは、Infragisticsコンポーネントとリサイズルーチンを使用すると、異なるコンピュータで異なって表示されます

私はおそらく何が間違っているかを理解するためにテストが不足しています。すべてのコンピュータはWindows 7をさまざまな画面解像度で実行します。

私はInfragisticsコンポーネントを使用してUIを構築しています。何かご意見は?

編集:いくつかの例。 「壊れた」ラップトップでは、一部のタブ(UltraWinTabの一部)が無効化され、最小化/復元コマンドの後に再描画されないと、タブのバックグラウンドのみが取得されますが、コンポーネントはありません。

他のいくつかのコントロールは、はるかに小さいサイズでは不可解に描画されます(領域を塗りつぶす代わりに、大きな空のボトムと右のバンドが得られます)。

+0

「自然な」状態と「壊れた」状態のコンポーネントの画像がありますか? – Pondidum

+0

私はアプリケーションからスクリーンショットを投稿することを避けるべきではないかと心配しています。解決策がなければ、数日後に最後の手段として、可能な限り匿名化します。その間、私は具体的な例をいくつか挙げてメッセージを編集しました – Andrea

答えて

5

これにも問題があります。 Infragisticsコントロールを使用したWindows.FormsアプリケーションはWindows XP上で見栄えがよく見えましたが、W7ではあらゆる種類のサイズ変更の問題が発生し始めました。何が起こったのかを知るには年を取った。

もちろん、最初はInfragisticsとの関係があると仮定しましたが、フォーラムのどこにでもヒントを見つけることはできませんでした。最後に、this linkを見つけました。コントロールの特定の入れ子構造の階層を越えて、サイズ変更イベントはもはや解消されないと説明されました。

私たちは、UIフレームワークを持っており、私たちのために、このオーバーライドでSystem.Windows.Forms.SplitContainerの派生物を作成するのに十分であった:

// HACK: under Windows7, controls do not always redraw to their whole rectangle after restoring their size. 
protected override void OnSizeChanged(EventArgs e) 
{ 
    if (Handle != null) // Can be null because the event is invoked before the handle is created. 
     BeginInvoke((MethodInvoker)(() => base.OnSizeChanged(e))); 
} 

我々はSplitContainersにインフラジスティックスコントロール(グリッド、ドックマネージャ)を持っているので。おそらくInfragisticsコントロールにはネストレベルが深く、他のコントロールより早くこの機能が実行される可能性があります。

+0

こんにちはGert、ありがとうございました。サイズ変更の問題に関連する可能性があります。私はできるだけ早くあなたのソリューションをテストします。 – Andrea

+0

うん、それは働いた。あなたは苦しいテストの時代から私を助けました! – Andrea

関連する問題