2

3 つの分割コンテナー (それぞれ 2 つのパネル、合計 6 つのパネル) を含む Windows アプリケーションを開発しています。今、私は各パネルに3つのラベルを動的に追加したいと考えています.1つのソリューションは、for ループを使用してすべての分割コンテナとそのパネルにアクセスしようとしていますが、分割コンテナにアクセスするために for ループを使用する方法がわかりません。これに for ループを使用できますか? また、すべてのパネル(6)に同時にコントロールを追加したいと考えています。これを行う方法。前もって感謝します..!!これは私がやったことです...

foreach (SplitContainer sp in this.Controls)
        {          
            Label tileTitle = new Label();
            tileTitle.Text = "OneClick";
            tileTitle.Visible = true;
            tileTitle.Location = new Point(10, 10);
            sp.Panel1.Controls.Add(tileTitle);
        }
4

3 に答える 3

2
foreach (Control c in this.Controls)
{
    if (c is SplitContainer)
    {
        Label tileTitle = new Label();
        tileTitle.Text = "OneClick";
        tileTitle.Visible = true;
        tileTitle.Location = new Point(10, 10);

        Label tileTitle2 = new Label();
        tileTitle2.Text = "OneClick";
        tileTitle2.Visible = true;
        tileTitle2.Location = new Point(10, 10);

        ((SplitContainer)c).Panel1.Controls.Add(tileTitle);
        ((SplitContainer)c).Panel2.Controls.Add((tileTitle2));
    }
}
于 2012-08-28T15:10:30.297 に答える
1

Controls.OfType拡張機能を使用して、SplitContainerタイプのコントロールのみを取得してみてください

foreach (SplitContainer sp in this.Controls.OfType<SplitContainer>())
{
    Label title = MakeLabel("OneClick", new Point(10, 10);
    sp.Panel1.Controls.Add(title);
    Label title1 = MakeLabel("OneClick", new Point(10, 10);
    sp.Panel2.Controls.Add(title1);
}

private Label MakeLabel(string caption, Point position)
{
    Label lbl = new Label();   
    lbl.Text = caption;   
    lbl.Location = position;   
    lbl.Visible = true;   
    return lbl;
}

Steveを編集 し、panel1とpanel2に同じラベルを追加します。panel2のaddメソッドで変数名を修正しました。

于 2012-08-28T15:41:53.060 に答える
0

私はスティーブが行ったのと同じ方法でこれを行いましたが、同時にTableLayoutPanel複数を追加できるため、すべての分割コンテナを格納するためにSplitContainer使用してDockstyle.Fillいます。

    private void Form1_Load(object sender, EventArgs e)
    {
        foreach (SplitContainer sc in this.tableLayoutPanel1.Controls.OfType<SplitContainer>())
        {
            Label title = MakeLabel("OneClick", new Point(10, 10));
            sc.Panel1.Controls.Add(title);
            Label title1 = MakeLabel("TwoClick", new Point(10, 10));
            sc.Panel2.Controls.Add(title1);
        }
    }

    private Label MakeLabel(string caption, Point position)
    {
        Label lbl = new Label();
        lbl.Text = caption;
        lbl.Location = position;
        lbl.Visible = true;
        return lbl;
    }

ここに示すように、ソリューションは完全に機能します: http://imageshack.us/photo/my-images/838/splitcontainer.png/

于 2012-08-29T08:23:22.263 に答える