none
Nasıl butona tıklayarak bir nesnenin çoğaltılmasını sağlarım RRS feed

  • Genel Tartışma

  • yukarıdaki gibi bir form alanım var, ben "+" butonuna her tıkladığımda yukarıdaki textbox'ın aynı özelliklerine sahip kopyasının içi boş bir şekilde aşağıda oluşmasını istiyorum ve butona her tıkladığımda bu şekilde devam etmesini istiyorum, bunu nasıl yaparım.

    İstediğim şey tam olarak şu

    22 Mayıs 2017 Pazartesi 15:45

Tüm Yanıtlar

  • Merhaba,

     private void button1_Click(object sender, EventArgs e)//Form'daki butonun click event'ı.
            {
                var textBox = this.Controls.AsParallel().OfType<TextBox>().OrderByDescending(a => a.Location.Y).FirstOrDefault();//Formdaki TextBox'ları Lokasyonunun Y değerine göre büyükten küçüğe sıralayıp, son oluşturulan TextBox'ın bir kopyasını aldım. Nedeni ise, her oluşturulacak textbox nesnesinin, bir diğerinden daha aşağıda olmasını sağlamak için mevcut lokasyon bilgisine ulaşmak.
                if (textBox != null)//TextBox varmı diye kontrol ediyoruz, eğer yoksa if bloguna girmemeli.
                {
                    TextBoxOlustur(textBox.Location.Y + 25);//Oluşturduğumuz methodu çağırıyoruz, Lokasyon Y bilgisini, son oluşturulan TextBox'ın Lokasyon Y bilgisine 25 ekleyerek veriyoruz ki her nesne alt alta oluşturulsun.
                    button1.Location = new Point(button1.Location.X, textBox.Location.Y + 50);//Button nesnesinin Lokasyon X değeri aynı kalabilir ancak Y değerini TextBox nesnesine göre 50 artırmalıyız ki button en altta kalsın.
                }
              
    
            }
            void TextBoxOlustur(int y)
            {
    //button1 ve textBox1 nesneleri, form üzerine başlangıçta eklenilen nesneler. Sizin eklediğiniz nesnelerin adı farklı ise değiştiriniz. TextBox t = new TextBox();//TextBox nesnesinin instance'ını alıyoruz. t.Name = "a";//İsim veriyoruz, ben sembolik olarak a ismini verdim. t.Size = textBox1.Size; //Oluşturulacak nesnenin büyüklüğü, form üzerindeki textbox ile aynı olabilir. t.Location = new Point(textBox1.Location.X, y);//Oluşturulacak nesnenin Lokasyon X değeri, form üzerindeki ile aynı olabilir, ancak Lokasyon Y değeri, aldığı parametreye göre değişecek çünkü üst üste binmemeli, alt alta olmalı. this.Controls.Add(t);//Form'a ekletiyoruz. }
    Çalışmalarınızda kolaylıklar dilerim.



    Code is Poetry


    22 Mayıs 2017 Pazartesi 18:05
    Moderatör
  • TextBox sonTextBox;
    
    private void Form1_Load(object sender, System.EventArgs e)
    {
        sonTextBox = textBox1;
    }
    
    private void Button1_Click(object sender, System.EventArgs e)
    {
        TextBox yeniTextBox = new TextBox();
        yeniTextBox.Top = sonTextBox.Top + sonTextBox.Height + 20;
        Controls.Add(yeniTextBox);
        sonTextBox = yeniTextBox;
    }
    Başarılar...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...


    22 Mayıs 2017 Pazartesi 20:16