7

UserControls を FlowLayoutPanel に追加すると、適切に表示されます。追加する前に UserControls の Dock または Anchor プロパティを変更すると、それらは追加されますが、レンダリングされません。

方法:子コントロールのアンカーとドック」によると、これは可能です。

  • 十分な数のコントロールを追加すると垂直スクロールバーが表示されるため、(描画していないにもかかわらず) コントロールが追加されていることがわかります。
  • UserControls の "Dock" プロパティを "Left" または "None" に設定すると、それらはレンダリングされますが、他のオプションはレンダリングされません。
  • UserControls の "Anchor" プロパティを Top | 以外に設定します。左はレンダリングされません。
  • コントロールを追加する前または後にドックを設定しても違いはありません (追加、ドック対ドック、追加)。
  • FlowLayoutPanel 自体がドッキング (Fill) され、FlowDirection が TopDown に設定され、WrapContents が false に設定され、AutoScroll が true に設定され、それ以外はデフォルトです。

.NET 3.5 を使用しています。


コメントへの回答として、コメントされた 2 行は、ドックを変更しようとした場所です。間違いなく 2 番目のスポットの方が理にかなっていますが、別のスポットを試してみました。

public void CreateObjectControl( object o )
{
    ObjectControl oc = new ObjectControl();

    oc.MyObject = o;

    //This was a spot I mentioned:
    //oc.Dock = DockStyle.Fill;

    ObjectDictionary.Add( o, oc );
    flowLayoutPanel1.Controls.Add( oc );

    //This is the other spot I mentioned:
    oc.Dock = DockStyle.Fill;
}
4

2 に答える 2

0

適切に表示するためにレンダリングが必要な修正を行う前に、コントロールに SuspendLayout および Resumelayout 関数を使用してみてください。

その特定のコントロールの Designer.cs からのコードを確認できます。

構文

control.SuspendLayout();
{Your code for designer amendments}
control.resumeaLayout();
于 2014-11-28T07:23:31.747 に答える