C# Windows Form App ile sırasıyla Panel oluşturma

Syammu12

Hectopat
Katılım
15 Haziran 2022
Mesajlar
57
Daha fazla  
Cinsiyet
Erkek
Merhaba. Ben bir yemek tarifi uygulaması yapıyorum ve bilgileri Access veri tabanı kullanarak depoluyorum. Aşağıdaki resmi uygulamanın nasıl göründüğünü anlayabilmeniz için Paint yardımıyla çizdim. Henüz uygulama tamamlanmadığı için birçok şey eksik, bu yüzden direkt form görüntüsünü koyamadım. Ama aklımda böyle bir şey var:

formappkroki.PNG


Siyah kare ve çizginin olduğu yerler formlar arası geçiş için koyduğum Button, Label gibi şeyler. Asıl önemli kısım mor alan.
Mor kare yerine Panel (ya da başka bir şey), kırmızı kare yerine Picturebox, pembe çizgiler yerine Label kullanmak istiyorum. Bunların nasıl yapıldığının kolay olduğunun farkındayım ama her yenisi eklendiğinde öncekinin bir altına eklenmesi lazım. Yani son eklenen bir önceki eklenen Panelin X aşağısına eklenmeli. Bunu nasıl yapabilirim?
 
Son düzenleyen: Moderatör:
Merhaba. Ben bir yemek tarifi uygulaması yapıyorum ve bilgileri Access veri tabanı kullanarak depoluyorum. Aşağıdaki resmi uygulamanın nasıl göründüğünü anlayabilmeniz için Paint yardımıyla çizdim. Henüz uygulama tamamlanmadığı için birçok şey eksik, bu yüzden direkt form görüntüsünü koyamadım. Ama aklımda böyle bir şey var:

Eki Görüntüle 1795080

Siyah kare ve çizginin olduğu yerler formlar arası geçiş için koyduğum Button, Label gibi şeyler. Asıl önemli kısım mor alan.
Mor kare yerine Panel (ya da başka bir şey), kırmızı kare yerine Picturebox, pembe çizgiler yerine Label kullanmak istiyorum. Bunların nasıl yapıldığının kolay olduğunun farkındayım ama her yenisi eklendiğinde öncekinin bir altına eklenmesi lazım. Yani son eklenen bir önceki eklenen Panelin X aşağısına eklenmeli. Bunu nasıl yapabilirim?
Aslında basit mantık olarak.

C#:
int kacKere = 50; //bu değer başlangıçtaki konumun değeridir.

while(kacKere > 5) //burası örnektir.
{
    Panel panel = new Panel();
    panel.Size = new Size(100, 100);
    panel.Location = new Point(50, kacKere);
    this.Controls.Add(panel); //this kısmına isterseniz bir panelin üstüne ekleyebilirsiniz
    kacKere += 200; //aralığın ne kadar olduğunu azaltarak ve ya artırarak değiştirebilirsiniz.
}
 
Merhaba. Ben bir yemek tarifi uygulaması yapıyorum ve bilgileri Access veri tabanı kullanarak depoluyorum. Aşağıdaki resmi uygulamanın nasıl göründüğünü anlayabilmeniz için Paint yardımıyla çizdim. Henüz uygulama tamamlanmadığı için birçok şey eksik, bu yüzden direkt form görüntüsünü koyamadım. Ama aklımda böyle bir şey var:

Eki Görüntüle 1795080

Siyah kare ve çizginin olduğu yerler formlar arası geçiş için koyduğum Button, Label gibi şeyler. Asıl önemli kısım mor alan.
Mor kare yerine Panel (ya da başka bir şey), kırmızı kare yerine Picturebox, pembe çizgiler yerine Label kullanmak istiyorum. Bunların nasıl yapıldığının kolay olduğunun farkındayım ama her yenisi eklendiğinde öncekinin bir altına eklenmesi lazım. Yani son eklenen bir önceki eklenen Panelin X aşağısına eklenmeli. Bunu nasıl yapabilirim?
FlowLayoutPanel kullan

Düzenleme : Adam taa mayısta yazmış görmedim.
 
Konu sahibinin şuan işine yaramıyor olsa da gelecekte işine yaracak olanlar için veri tabanı üzerinden sıra ile panellere veriyi yerleştirmeyi anlatayım.

FlowLayoutPanel üzerine listelemeyi gösteriyor bu. Koda değişiklik yaparak düzenleyebilrsin.
C#:
private static SQLiteCommand command;
private static SQLiteDataReader reader;

public static void TestList(Control cntrl, string sqlCommand)
{
    try
    {
        using (SQLiteConnection connection = new SQLiteConnection(ConfigurationManager.ConnectionStrings["DBconnection"].ConnectionString))
        {
            if (connection.State == ConnectionState.Closed)
            {
                connection.Open();
            }

            cntrl.Controls.Clear();
            List<Test_UserControl> test_UserControls = new List<Test_UserControl>();

            using (command = new SQLiteCommand(sqlCommand, connection))
            {
                using (reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Test_UserControl test_UserData = new Test_UserControl
                        {
                            TestID = Convert.ToInt32(reader["TestID"]),
                            TestName = reader["TestName"].ToString(),
                            TestNo = Convert.ToInt32(reader["TestNo"])
                        };

                        test_UserControls.Add(test_UserData);

                        cntrl.Controls.AddRange(test_UserControls.ToArray());
                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Listeleme sırasında bir şeyler yolunda gitmedi;\n" + ex);
    }
}

private void Test_Load(object sender, EventArgs e)
{
    TestList(TestPanel, "SELECT* FROM Test ORDER BY TestID ASC");
}
 

Technopat Haberler

Geri
Yukarı