GDI +を使用してテキストとグラフィックスを描画するカスタムUserControlがあります。通常、別のコントロール内でDockStyle.Bottomを使用してドッキングします。カスタムUserControlでAutoSizeを実装する
このコントロールのサイズは、Graphics.MeasureString()を使用するカスタムレイアウトによって決まります。したがって、幅が変更されるたびに高さを再計算する必要があります。これは、親の幅が変更されたときに変更されます。
現在、このコントロールの高さをOnSizeChangedイベントに設定しています。しかし、私はこれにいくつかのバグに気付いています。ときどき親のサイズを変更すると、DockStyle.Bottomに設定されていても、コントロールは親の下部に触れていません。私はSpy ++を使ってコントロールの境界を分析し、コントロールと親のエッジの間には約20ピクセルだけ空のスペースがあります。
トップまたはボトムDockStyleを前提としたこのUserControlで適切なAutoSizeを実装したいと思います。
FlowLayoutPanelとUserControl自体の両方でAutoSizeをtrueに設定しようとしましたか? –
FlowLayoutPanelを使用していません。 –
これにFlowLayoutPanelを使用すると何か問題がありますか?アンカーの設定はどうですか?ユーザーコントロールのすべてのコントロールにアンカーとドッキングを使用し、コントロールの端をドッキングするように設定すると、コントロールはUserControlでサイズが変更され、アンカー/ドッキングもUserControlに設定できるようになります。 UserControlのAnchorプロパティとDockプロパティを組み合わせて、コントロールの端がUIの他の部分に表示されるようにオプションを設定します。 UIのサイズが変更されると、コントロールのサイズも適切に変更されます。 –