0

私は新しい を作成するプログラムを持っていますControl(実際には -Formは withですTopLevel = false)、それらを on に配置しPanelますForm1

なんらかの理由で、通常、この後に の外側Form非常に短時間出現するように見えるものが続きます。非常に短いため、何が起こっているのかを正確に伝えるのは困難です。おそらくそこに移動し(そしてサイズを変更して)、戻ってきます。あるいは、そこに表示されるのは装着されているものかもしれません(しかし、どうしてそれが起こるのでしょうか? それは外れています!)。Form1Form1FormForm1Form1

コード内に原因となるものは何も見つかりませんでした。コード全体が長すぎてここに投稿できません。(関連するコードは単純に:MyPanel.Controls.Add(newForm);です。)

これを引き起こす可能性のある既知のバグはありますか?

4

2 に答える 2

1

コードがどのように見えるかはある程度推測できます。TopLevel = false で Form を Controls コレクションに追加する際の問題は、明示的に表示する必要があることです。これは奇妙な癖 (別名バグ) です。通常、コントロールを Controls コレクションに追加すると、コントロールが自動的に表示されます。

したがって、おそらく次のようになります。

var newform = new Form1();
newform.Visible = true;    // or newform.Show()
newform.TopLevel = false;
MyPanel.Controls.Add(newForm);

そうです、メッセージがディスパッチされる原因となる何かを行うと、非常に短い間、トップレベルのウィンドウとして表示される可能性があります。Visible と TopLevel プロパティの割り当てを入れ替えて修正します。

これで問題が解決しない場合は、コード スニペットを投稿してください。

于 2012-10-31T18:06:57.067 に答える
0

Form の Controls コレクションに Form を追加しようとしたところ、最上位のコントロールを追加できないという例外が発生しました。それを「修正」するには、そのフォームの TopLevel プロパティを false に設定します。

それは正しい修正ではありません。

代わりにPanel (またはその派生物の 1 つ) を使用してください。

于 2012-10-31T17:30:43.287 に答える