SORU
17 Temmuz 2009, Cuma


Win TableLayoutPanel satır ekleme programlama yoluyla

Bir süre bununla mücadele ediyorum, ve diğer insanların bir dizi TableLayoutPanel ile mücadele bulduk (.2.0 Win net) sıra.

Sorun

Bir 'boş' 10 sütun, sonra çalışma zamanı programlama yoluyla tanımlanmış olan tablelayoutpanel, denetimlerin satır (hücre başına bir kontrol yani) ekleyin. almaya çalışıyorum

Kadar basit olmalı gerektiğini düşünebilirler

myTableLayoutPanel.Controls.Add(myControl, 0 /* Column Index */, 0 /* Row index */);

Ama bu (benim için) satır ekleme yok. Belki de bir satır içinde stil ekleme

myTableLayoutPanel.RowStyles.Clear();
myTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));

Ama bu da işe yaramıyor. Ben zaten etrafında kazdık ve öğrendim myTableLayoutPanel.RowCount Kullanım değişikliklerden tasarım zamanı için çalışma süresi, dolayısıyla yapmak myTableLayoutPanel.RowCount ; değil aslında eklemek başka bir satır bile önce/sonra Ekleme RowStyle girdi.

Başka bir ilgili bir sorun duyuyorum karşılaşıyor denetimleri eklenecektir ekran, ama hepsi sadece elde işlenmiş noktası 0,0 TableLayoutPanel, Ayrıca onlar bile kısıtlı olması içinde Hücre sınırları olan onlar olacaktı görüntülenen içinde (yani Dock = DockStyle.Onlar hala çok büyük/küçük görünür) doldurun.

Biri çalışma zamanında satır & denetimleri ekleyerek çalışan bir örnek var mı?

Şerefe

CEVAP
2 ŞUBAT 2010, Salı


Ben bunu geçen hafta yaptım. AddRows veya AddColumns için TableLayoutPanel üzerinde GrowStyle ayarlayın, sonra kodunuz olmalı

//Adds "myControl" to the first column of each row
myTableLayoutPanel.Controls.Add(myControl1, 0 /* Column Index */, 0 /* Row index */);
myTableLayoutPanel.Controls.Add(myControl2, 0 /* Column Index */, 1 /* Row index */);
myTableLayoutPanel.Controls.Add(myControl3, 0 /* Column Index */, 2 /* Row index */);

Burada ne yaptığınızı benzer görünen bazı çalışan kod:

    private Int32 tlpRowCount = 0;

    private void BindAddress()
    {
        Addlabel(Addresses.Street);
        if (!String.IsNullOrEmpty(Addresses.Street2))
        {
            Addlabel(Addresses.Street2);
        }
        Addlabel(Addresses.CityStateZip);
        if (!String.IsNullOrEmpty(Account.Country))
        {
            Addlabel(Address.Country);
        }
        Addlabel(String.Empty); // Notice the empty label...
    }

    private void Addlabel(String text)
    {            
        label = new Label();
        label.Dock = DockStyle.Fill;
        label.Text = text;
        label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
        tlpAddress.Controls.Add(label, 1, tlpRowCount);
        tlpRowCount  ;
    }

TableLayoutPanel her zaman boyutu ile bana uyar verir. Yukarıda benim örnekte, bir adres ya da hesaba bağlı olarak, bir adres satırı bir iki kişi, ya da bir ülke büyümek daraltmanız kartı talebinde bulunuyorum. Masa düzeni panelin son satır veya sütun, streç çünkü, orada boş etiket yeni boş bir satır zorlamak için atıyorum, sonra her şey güzel çizgiler.

İşte başlıyorum tablosunu görebilirsiniz tasarımcı kodu:

            // tlpAddress
        // 
        this.tlpAddress.AutoSize = true;
        this.tlpAddress.BackColor = System.Drawing.Color.Transparent;
        this.tlpAddress.ColumnCount = 2;
        this.tlpAddress.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 25F));
        this.tlpAddress.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
        this.tlpAddress.Controls.Add(this.pictureBox1, 0, 0);
        this.tlpAddress.Dock = System.Windows.Forms.DockStyle.Fill;
        this.tlpAddress.Location = new System.Drawing.Point(0, 0);
        this.tlpAddress.Name = "tlpAddress";
        this.tlpAddress.Padding = new System.Windows.Forms.Padding(3);
        this.tlpAddress.RowCount = 2;
        this.tlpAddress.RowStyles.Add(new System.Windows.Forms.RowStyle());
        this.tlpAddress.RowStyles.Add(new System.Windows.Forms.RowStyle());
        this.tlpAddress.Size = new System.Drawing.Size(220, 95);
        this.tlpAddress.TabIndex = 0;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • We've moved!

    We've moved!

    7 Ocak 2008
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009
  • WK

    WK

    9 Ocak 2006