2009-03-12 11 views
3

値とラベルのペアを持つ文字列である変数を変更する必要があるページがあります。私はDataGridオブジェクトを使用していましたが、必要なものに対しては十分ではありません。C#Winforms - FlowPanelコントロールにフォームを追加する

私は、テキストラベルとテキストボックス、そしてフローパネルであるフォームを持っています。そして、私はプログラムで各変数のこのフォームのインスタンスをフローパネルに追加しようとしています。ソリューションのためのグーグルでは、UIデザイナーのボタンをクリックしてフローパネルにドロップするというビデオチュートリアルがたくさんありましたが、私はこれをプログラム的に行いたいと思います。

これを行うための「正しい」または「標準的な」方法は何ですか。

+0

「フォーム」を意味しますか?あなたは「コントロール」を意味しますか? –

+0

私はフォームがコントロールではないことを意味します –

答えて

2

データは、TableLayoutPanelとよく似ているかもしれませんが、理論は同じです。ただ.Controls.Add(...)を呼び出し、それが動作するはずです:

FlowLayoutPanel panel = new FlowLayoutPanel(); 
    Form form = new Form(); 
    panel.Dock = DockStyle.Fill; 
    form.Controls.Add(panel); 

    for (int i = 0; i < 100; i++) 
    { 
     panel.Controls.Add(new TextBox()); 
    } 

    Application.Run(form); 

またはTableLayoutPanelで:

TableLayoutPanel panel = new TableLayoutPanel(); 
    Form form = new Form(); 
    panel.Dock = DockStyle.Fill; 
    panel.ColumnCount = 2; 
    form.Controls.Add(panel); 

    for (int i = 0; i < 100; i++) 
    { 
     panel.Controls.Add(new Label { Text = "label " + i }); 
     panel.Controls.Add(new TextBox { Text = "text " + i }); 
    } 

も ​​- PropertyGridは、より良いあなたのニーズに合うのだろうか?これは、 "get value"、 "show value"、 "parse value"、 "store value"ロジックをすべて処理し、ICustomTypeDescriptorなどのプラグインを使用して動的プロパティを可能にします。 FlowLayoutのパネルにフォームのインスタンスを追加するには

2

、私は次のようにします。

Form1 f1 = new Form1(); 
f1.TopLevel = false; 
f1.Visible = true; 
flowLayoutPanel1.Controls.add(f1); 

私のテストコードでOK動作するようです。

+0

元の質問はうまく表現されていませんでしたが、この解決策は私の問題を解決しました - フォームが別のコントロールに追加されました。 Visible =真実は私にとって固定です。 –

関連する問題