2016-03-19 1 views
2

固定ソースから音楽アルバムを検索するプログラムを作成し、結果リストをJSONとして返します。私はこのオブジェクトをデシリアライズしてC#で使えるようにすることに成功しましたが、苦労していることが1つあります。リスト内の各オブジェクトのピクチャボックスとラベルをVisual C#で作成する

現時点では、私は手動でいくつかの画像ボックス(アルバムアート用)とラベル(情報用)を作成しましたが、結果の数はユーザーの検索によって異なります。

それぞれの結果を通過する 'for each'ループを実行する方法がありますか、必要な画像ボックスとラベルのコンボをプログラムで作成して、結果を少なくするか、

私はアプリケーションが検索を実行していることを確認しましたが、確かにすべての結果がプリセットラベル/テキストボックスを埋めることができないためですか?

for each result in results: 
{ 
    Create Picture Box; 
    Create Labels; 
} 
+0

ListView – mohsen

答えて

1

はい、可能です。 PictureBoxLabelを使用し、あなたのコードはWinFormFormであると仮定すると、とControls.Add

foreach (var result in results){ 
    PictureBox pb = ...; 
    //initialize your PictureBox 
    pb.Location = ...; 
    pb.Image = ...; 
    pb.Name = ...; 
    // etc, then add 
    Controls.Add(pb); 

    //similarly for Label 
    Label lbl = ...; 
    //initialize your Label 
    lbl.Location = ...; 
    lbl.Text = ...; 
    lbl.Name = ...; 
    // etc, then add 
    Controls.Add(lbl); 
} 

一つあなたが動的に作成で注意する必要がある部分がLocationです。新しいコントロールの位置が重複していないことを確認します。そうでない場合は、複数のコントロールが互いに重なって配置されているため、単一のコントロールのように見える場合があります。

注:FlowLayoutPanelPictureBoxLabelを入れ、および/または素晴らしいアイデアだろうPictureBoxUserControlとそれにLabelを作成するいずれかの、より体系的にそれを行うには。次にUserControlを、FormまたはFlowLayoutPanelのいずれかに直接追加するだけです(この回答の下のコメントをお読みください)。私の答えは単純なアプローチですが、C#WinFormでダイナミックコントロールを作成することは可能です。

+0

を使用することができます。それらをFlowLayoutPanelに追加するのは良い考えです。また、私はPBとラベルを持つUserControlsを作成することを検討するだろう.. – TaW

+1

@TaWああ、はい...それはより体系的に、そしておそらくあなたの提案、FlowLayoutPanel、および/またはUserControlをPBとラベルそれは素晴らしい考えです。次に、フォームまたはFlowLayoutPanelに直接、UserControlを1つずつ追加するだけです。何故なの? :)私の答えは単純なアプローチですが、アイデアを指摘するだけです。 – Ian

+0

あなたのご意見をお寄せいただきありがとうございます。私は数日間あなたのソリューションをテストすることはできませんが、私が解釈できるものから、それはすべて私にとって意味があります。とても素早く明確に答えてくれてありがとう。チャーリー – Char

関連する問題