これはwinformsにあります。基本的に、他のユーザー コントロールで満たされた FlowlayoutControl であるユーザー コントロールを作成しています。追加された各コントロールを前のコントロールの上部に (左から右に) ドッキングする必要があります。残念ながら、flowlayoutcontrol はドッキング プロパティを無視しているようです。そこにコントロールをドッキングする方法はありますか? 項目を左から右に埋める必要がありますが、項目はリスト ビューのように配置する必要があります。私が提供できるコードは本当にありません。なぜなら、それはどのようなアプローチを取るべきかを理解することの問題だからです。
3 に答える
FlowLayoutPanel を正しくドッキングするのは難しい作業です。元の質問から、リスト ビューのようなものが必要です。リスト内の項目の 1 つ (最も幅の広いもの) が FlowLayoutPanel の「仮想列」を定義することを知っておくことが重要です。残りの項目はそれに続きます。アイテムの 1 つを右にドラッグすることで、VS デザイナーでこれを証明できます。「仮想列」がそれに続き、他のアイテムが固定されている場合、それらは仮想列に従います。
列を定義しているコントロールを固定できないことに注意してください。固定するものは何もなく、奇妙なことが起こります。
これらすべてをプログラムで行い、FlowLayoutPanel で Layout イベントを処理し、以下のコードのようなコードを配置します。デザイナーでは、リスト内のすべてのアイテムがドッキングされておらず、アンカーが「なし」に設定されていることが重要です。昨日、これに 1 日を費やしましたが、デザイナーでそれを行うことで、以下のコードが機能しました。
flowLayoutPanel.Controls[0].Dock = DockStyle.None;
flowLayoutPanel.Controls[0].Width = flowLayoutPanel.DisplayRectangle.Width - lowLayoutPanel.Controls[0].Margin.Horizontal;
for (int i = 1; i < flowLayoutPanel.Controls.Count; i++)
{
flowLayoutPanel.Controls[i].Dock = DockStyle.Top;
}
FlowLayoutPanel.FlowDirection プロパティは、FlowLayoutPanel コントロールのフロー方向を示します。
FlowLayoutPanel.WrapContents プロパティは、FlowLayoutPanel コントロールがコンテンツをラップするか、コンテンツを切り取るかを示します。
FlowLayoutPanel のドッキング プロパティは、パネル自体 (FlowLayoutPanel をフォームの左側にドッキングする場合など) 用であり、パネル内のコントロールのコンテナー用ではありません。
DefaultPadding および DefaultMargin プロパティで遊んでみてください。これらは、含まれるコントロールの間隔に適用されます。