1

DataTableを通過することになっているループがあり、各行に対して新しいGroupBoxを作成し、そのテキストを1つの列の値に設定します。そのGroupBoxに、テーブル内の別の列に類似したテキスト付きのラベルを配置します。これはコードの一部にすぎません。

for (int i = 0; i < tab.Rows.Count; i++)
{
    lblbox[i] = new GroupBox();
    lblbox[i].Text = tab.Rows[i]["text"].ToString();
    lblbox[i].Name = "box no " + i.ToString();
    lblbox[i].Visible = true;        
    this.Controls.Add(lblbox[i]);
    lblbox[i].Location = new Point(5, 55 * i);
    lblbox[i].Height = 50;
    lblbox[i].SendToBack();
    importancelbl[i] = new Label();
    importancelbl[i].Text = "Importance: " + tab.Rows[i]["importance"].ToString();
    importancelbl[i].Name = "implbl" + i.ToString();
    importancelbl[i].Visible = true;
    lblbox[i].Controls.Add(importancelbl[i]);
    importancelbl[i].BringToFront();
    Point locP = new Point();
    locP.X = lblbox[i].Location.X + 5;
    locP.Y = lblbox[i].Location.Y + 15;
    importancelbl[i].Location = locP;

}

コードを実行すると、3つの(テーブルに3つの行があります)GroupBoxが正しく作成され、すべてのラベルが作成されますが、最初のラベルのみがGroupboxに表示されます。これらのラベルをGroupBoxではなくフォームに追加すると、すべてが表示されますが、ボックスに入れたいと思います...ほとんどすべてを試しましたが、まだ非常に混乱しています(特に動作によって)最初のラベルの)。私は間違いがおそらく明白で愚かであることを知っています、しかし私はそれを見つけることができません!

4

3 に答える 3

1

Control.Locationはその親を基準にしているLocationため、ラベルを(5、15)に設定します。

locP.X = 5;
locP.Y = 15;
于 2012-05-17T19:21:15.630 に答える
0

私の推測では、それらはどういうわけか重なり合っており、どういうわけかお互いを消し去っています。

フォームが機能する場合と機能しない場合の写真を投稿してみてください。また、すべてのコードを追加しますか?

于 2012-05-17T19:20:27.123 に答える
0

追加を実行してみてください

lblbox[i].Controls.Add(importancelbl[i]);
this.Controls.Add(lblbox[i]);

すべてのプロパティを設定した後

于 2012-05-17T19:22:16.497 に答える