2008-09-04 5 views
8

C#2.0を使用すると、動的フォームコントロールを実装する最適な方法は何ですか?動的フォームコントロール

データオブジェクトごとにコントロールを用意する必要があります。そのため、手動で行い、値を増やしたりレイアウトしたりするのがよいでしょうか?

答えて

8

FlowLayoutPanelTableLayoutPanelなどの自動レイアウトのパネルを使用できます。

残念ながら、自動的にレイアウトされたパネルは2つしかありませんが、カスタムレイアウトパネルを作成できます。

私は以下の記事を読むためにあなたをお勧めします:

How to: Create a Resizable Windows Form for Data Entry

Walkthrough: Creating a Resizable Windows Form for Data Entry

別のオプションは、WPF(Windowsのプレゼンテーションプレゼンテーション)を使用しています。
WPFはあなたの仕事に最適です。
WPFコントロールは、WinFormsアプリケーションでホストすることができますので、完全に切り替える必要はありません。

1

「ダイナミック」とはどういう意味ですか?データセット内の各データ行に対して新しい、固定されたコントロールセット?次に、コントロールが含まれているUserControlを使用します。

データレイアウトに応じて、カスタマイズした一連のコントロールを各列に1つずつ、たとえばTextBoxなどのユーザーに提供したいと考えていますか?

1

ええ、私は合理的に有効であるように手動でコントロールをレイアウトしています(コントロールの高さとコントロールのマージンでTopプロパティを増やしています)。

もう1つの方法は、Dockを持つパネルにコントロールを配置して、連続する各パネルが上のパネルにドックアップするようにすることです。次に、個々のパネルの可視性を切り替えることができ、下のコントロールはスナップして利用可能なスペースを埋めることができます。ドッキングされた非表示のパネルを表示すると、他のドッキングされたコントロールとの相対的な位置が変更されることがあります。

1

これはプロジェクトで今やっているところです。それは単純な場合にのみ便利です。より複雑なケースには、ある種のテンプレートを使用することをお勧めします。

たとえば、Reflectionを使用して、特定のタイプのコントロールを、古いプロジェクトのドメインオブジェクトの特定のプロパティにマップします。

単純な例として、t4を使用してテンプレートからコードを生成してみてください。T4 Templates in Visual Studio for Code Generation Screencastを参照してください。これをWinFormsに適用することができます。

DevExperienceには素晴らしい(高価な)フレームワークがあります(DevExpress eXpressApp Framework™を参照)。

2

@Samこの質問はWindowsフォームに関するものですが、間違いなくWPFを検討する必要があります。この種のシナリオは、です。実際にはで、DataTemplatesとTemplateSelectorsを使用すると簡単です。

関連する問題