2016-09-02 8 views
0

ここに私の前の質問は、あなたが私の現在の問題に関するいくつかの詳細な情報が必要な場合は、次のとおりです。プログラムは、デバッグモードでのみ正しく動作

WinForm: Inherited Panel wont Autosize

はあなたがそれを読みたくない場合は、私はよあなたにいくつかの一般的な情報を与える:

  • 私はちょうど私がいずれかを持っていないこと、それが意味することに
  • このプログラムで使用され、特定のDLLを編集しています、プログラム経由で直接動作していませんよアクセスsこの特定のプログラムのソースコードに
  • これはまた、このプログラムで使用されているDLLのいくつかの変更を介してこの問題を修正する必要があることを意味します。

    • 私はVS2015でのDLLのソースコードにプログラムを添付する場合には、何の問題もなく動作します。私は今のところ見つけた何

  • しかし、コードをビルドしてDLLをプログラムのフォルダにコピーすると、実際の問題です。tableLayoutPanelを実際のサイズの半分に縮小し、残りの半分には奇妙な不具合が発生します。その実際の、通常のスタートで何とか使用されていない、サイズ。私が試してみた何

  • 私はない"Dock = Fill" or "Autosize = true"を経由して、手動でサイズを変更し、それが働きました。しかし、皆さんが知っているように、最良の解決策ではないかもしれませんが、それを回避する方法がまったくない場合、それを使用したいだけです。誰もハードコードを好きではありません。だからみんながどんな考えを持っています

    this.tablelayoutPanel.Size = this.Size;
    this.tableLayoutPanel.Size = new Size(this.Height, this.Size);

  • 私は経由して親のサイズを継承しようとしましたか?

  • +0

    リリースモードのバージョンをデバッグするのはどうですか? –

    +0

    それは私に一度起こります。それは、2つのプロセスの環境変数が異なることが分かります。プロセスエクスプローラを使って見つけることができます。 – neohope

    +1

    @UweKeimええ、それは良いアイデアのように思えます。私はすぐにそれを試してみるでしょう。 – TheOnionMaster

    答えて

    0

    さて、なぜデバッガが動作し、リリース/デバッグビルドが動作しないのか分かりませんでした。しかし、私はちょうどApplication.DoEvents()とtableLayoutPanelMainで再描画を強制しました。 Invalidate() + Update()またはRefresh()がうまくいきませんでしたので、私は前にこれを試したことはありませんでした - 私はそうでした:大丈夫、それは簡単ではありません。

    しかし、いくつかの試行の後に&エラーと多くの時間...よく、私はそれで2週間働いていた...私は最も単純なものを試してみました、そして、それは働いた!

    とにかく、ありがとう、皆さん。私はそれを感謝します。

    +2

    DoEventsの問題を解決しているのであれば、実際の問題を修正するのではなく、実際の問題をペーパリングしている可能性があります。 DoEventsの問題を解決するのは危険です。予期せぬ再入国を招く可能性があります。そして、問題を理解し、原理的で正しい修正をアーキテクチャレベルで適用するのではなく、ランダムに問題を修正することの症状です。 –

    +0

    それを正しく修正する考えはありますか?リフレッシュ()が機能しないのはなぜですか?私は本当に私たちのDLLを使用したチームが問題を完了したと信じています。私の解決策は回避策に似ています。私はそれを認識していますが、外部ソースコードを変更できない限り、それを修正するのは私の唯一の方法です。私は実際には、同じDLLを使用する他のプログラムにもダメージを与える可能性があるので、このソリューションには本当に「幸せ」ではありません。しかし: それはテストの準備がとにかく、限り、それが動作する限り:それは大丈夫です。そうでない場合は、別の解決策を見つけようとします。 – TheOnionMaster

    関連する問題