C# 2.0 を使用して動的フォーム コントロールを実装する最良の方法は何ですか?
データ オブジェクトごとに一連のコントロールを提供する必要があるため、手動でそれを行い、トップ値をインクリメントしながらレイアウトする必要がありますか、それともより良い方法がありますか?
FlowLayoutPanelやTableLayoutPanelなどの自動レイアウトのパネルを使用できます。
残念ながら、すぐに使用できる自動レイアウトのパネルは 2 つしかありませんが、カスタム レイアウト パネルを作成できます。
以下の記事を読むことをお勧めします。
方法: データ入力用のサイズ変更可能な Windows フォームを作成する
チュートリアル: データ入力用のサイズ変更可能な Windows フォームの作成
別のオプションは、WPF (Windows プレゼンテーション プレゼンテーション) を使用することです。
WPF は、このタスクに最適です。
WPF コントロールは WinForms アプリでホストできるため、完全に切り替える必要はありません。
@Samこの質問はWindowsフォームに関するものであることは知っていますが、間違いなくWPFを見始める必要があります。この種のシナリオは、 DataTemplatesと TemplateSelector を使用する WPF では非常に簡単です。
「ダイナミック」とは何を意味しますか?データ セット内の各データ行に対する新しい固定のコントロール セットですか? 次にUserControl
、コントロールを含む を使用します。
TextBox
それとも、データ レイアウトに応じて、カスタマイズされた一連のコントロール (列ごとに 1 つなど) をユーザーに提供したいということですか?
ええ、私は手動でコントロールをレイアウトする (コントロールの高さとマージンを加えた分だけ Top プロパティを増やしていく) のがかなり効果的であることを発見しました。
もう 1 つの方法は、Dock を [Top] に設定して Panels にコントロールを配置し、連続する各パネルが上のパネルにドッキングするようにすることです。次に、個々のパネルの表示を切り替えることができ、その下のコントロールがスナップアップして使用可能なスペースを埋めます. これは少し予測できないことに注意してください。ドッキングされている非表示のパネルを表示すると、他のドッキングされたコントロールとの相対的な位置が変わることがあります。