C# Forms panel değiştirme nasıl olur?

imamparator61

Picopat
Katılım
12 Ekim 2024
Mesajlar
619
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Merhaba dostlar, panelhosgldn, panelhaberler ve paneltarihtebugun adında 3 panelim var, 1. panel hoş geldiniz ekranı, 2. panel siteden haber verisi çekme ekranı, 3. panel ise tarihte bugün ne olduğunu gösteren panel. Hedefim ise:
Hoş geldin paneli ilk başta görünsün. 5 saniye sonra haberler paneli görünsün. 5 saniye sonra tarihte bugün paneli görünsün.
Ardından, tekrar hoş geldin paneline dönsün.
Oluşan sıkıntı ise şöyle, form açıldıktan sonraki ilk 5 saniye panelhosgldn paneli gözüküyor, ondan sonraki 10 saniyede ise ekran bomboş kalıyor.
Kodlar:

C#:
 private int aktifPanelIndex = 0;

 private void tmrPanelGecis_Tick(object sender, EventArgs e)
 {
 panelHosgldn.Visible = false;
 panelHaberler.Visible = false;
 panelTarihteBugun.Visible = false;

 if (aktifPanelIndex == 0)
 {
 panelHosgldn.Visible = true;
 }
 else if (aktifPanelIndex == 1)
 {
 panelHaberler.Visible = true;
 }
 else if (aktifPanelIndex == 2)
 {
 panelTarihteBugun.Visible = true;
 }

 aktifPanelIndex++;

 if (aktifPanelIndex > 2)
 aktifPanelIndex = 0;
 }

 private async void anaekran_Load(object sender, EventArgs e)
 {
 panelHosgldn.Visible = true;
 panelHaberler.Visible = false;
 panelTarihteBugun.Visible = false;

 await HaberleriGetir();
 await OlaylariListeleAsync();

 tmrPanelGecis.Interval = 5000;
 tmrPanelGecis.Start();
 }

Yardımcı olursanız çok sevinirim.
 
Son düzenleyen: Moderatör:
Merhaba dostlar, panelhosgldn, panelhaberler ve paneltarihtebugun adında 3 panelim var, 1. panel hoş geldiniz ekranı, 2. panel siteden haber verisi çekme ekranı, 3. panel ise tarihte bugün ne olduğunu gösteren panel. Hedefim ise:
Hoş geldin paneli ilk başta görünsün. 5 saniye sonra haberler paneli görünsün. 5 saniye sonra tarihte bugün paneli görünsün.
Ardından, tekrar hoş geldin paneline dönsün.
Oluşan sıkıntı ise şöyle, form açıldıktan sonraki ilk 5 saniye panelhosgldn paneli gözüküyor, ondan sonraki 10 saniyede ise ekran bomboş kalıyor.
Kodlar:

C#:
 private int aktifPanelIndex = 0;

 private void tmrPanelGecis_Tick(object sender, EventArgs e)
 {
 panelHosgldn.Visible = false;
 panelHaberler.Visible = false;
 panelTarihteBugun.Visible = false;

 if (aktifPanelIndex == 0)
 {
 panelHosgldn.Visible = true;
 }
 else if (aktifPanelIndex == 1)
 {
 panelHaberler.Visible = true;
 }
 else if (aktifPanelIndex == 2)
 {
 panelTarihteBugun.Visible = true;
 }

 aktifPanelIndex++;

 if (aktifPanelIndex > 2)
 aktifPanelIndex = 0;
 }

 private async void anaekran_Load(object sender, EventArgs e)
 {
 panelHosgldn.Visible = true;
 panelHaberler.Visible = false;
 panelTarihteBugun.Visible = false;

 await HaberleriGetir();
 await OlaylariListeleAsync();

 tmrPanelGecis.Interval = 5000;
 tmrPanelGecis.Start();
 }

Yardımcı olursanız çok sevinirim.
Türkçe karakter kullanmayı bırakmanızı öneririm. Timer kullanmaya gerek yok. Donmasını istemiyorsanız Asenkron veya Multiworking yapın.
C#:
panelHosgldn.Visible = true;
Thread.Sleep(5000); // 5000 Milisaniye == 5 Saniye
// (Burada await Task.Delay da kullanılabilir uygulama donmaması açısından)
panelHosgldn.Visible = false;
panelHaberler.Visible = true;
Thread.Sleep(5000);
panelHaberler.Visible = false;
panelTarihteBugun.Visible = true;
Thread.Sleep(5000);
Veya daha sonra da eklenebilecek panelleri göz önünde bulundurmak için:
C#:
private void GetPanels()
{
    Panel[] panels = {
        panelHosgldn,
        panelHaberler,
        panelTarihteBugun
    }
    foreach (Panel p in panels)
    {
        p.Visible = true;
        Thread.Sleep(5000);
        p.Visible = false;
    }
}
 
Son düzenleme:
Türkçe karakter kullanmayı bırakmanızı öneririm. Timer kullanmaya gerek yok. Donmasını istemiyorsanız Asenkron veya Multiworking yapın.
C#:
panelHosgldn.Visible = true;
Thread.Sleep(5000); // 5000 Milisaniye == 5 Saniye
// (Burada await Task.Delay da kullanılabilir uygulama donmaması açısından)
panelHosgldn.Visible = false;
panelHaberler.Visible = true;
Thread.Sleep(5000);
panelHaberler.Visible = false;
panelTarihteBugun.Visible = true;
Thread.Sleep(5000);
Veya daha sonra da eklenebilecek panelleri göz önünde bulundurmak için:
C#:
private void GetPanels()
{
    Panel[] panels = {
        panelHosgldn,
        panelHaberler,
        panelTarihteBugun
    }
    foreach (Panel p in panels)
    {
        p.Visible = true;
        Thread.Sleep(5000);
        p.Visible = false;
    }
}
2. verdiğiniz kod bloğunu yapmayı deniycem çünkü ilerde 2 panel daha ekliycem. umarım olur.
 
Tamamdır. İyi günler ve iyi çalışmalar dilerim:)
hocam GetPanels methodunu form1_load içerisinde çağırdım sadece panelHsogldn'de kalıyor

hocam GetPanels methodunu form1_load içerisinde çağırdım sadece panelHsogldn'de kalıyor
pardon düzeltiyim, form yüklendikten 10 saniye boyunca panelHsogldn'de kalıyor, ondan sonra 10-15 sn donuyor, ondan sonrada ekran bomboş kalıyor

belki veri çekme işleminde bi hata vardır dedim, ayrı olan 2 projede haber çekme ve tarihte bugün ne olduğu verisini sıkıntısız çekiyor.

hocam GetPanels methodunu form1_load içerisinde çağırdım sadece panelHsogldn'de kalıyor


pardon düzeltiyim, form yüklendikten 10 saniye boyunca panelHsogldn'de kalıyor, ondan sonra 10-15 sn donuyor, ondan sonrada ekran bomboş kalıyor

belki veri çekme işleminde bi hata vardır dedim, ayrı olan 2 projede haber çekme ve tarihte bugün ne olduğu verisini sıkıntısız çekiyor.
Kod:
        private async void anaekran_Load(object sender, EventArgs e)
        {
            await HaberleriGetir();
            await OlaylariListeleAsync();
            while (true)
            {
                // Hoşgeldin Paneli
                panelHosgldn.Visible = true;
                panelHaberler.Visible = false;
                panelTarihteBugun.Visible = false;
                panelHosgldn.BringToFront();
                await Task.Delay(5000);

                // Haberler Paneli
                panelHosgldn.Visible = false;
                panelHaberler.Visible = true;
                panelTarihteBugun.Visible = false;
                panelHaberler.BringToFront();
                await Task.Delay(5000);

                // Tarihte Bugün Paneli
                panelHosgldn.Visible = false;
                panelHaberler.Visible = false;
                panelTarihteBugun.Visible = true;
                panelTarihteBugun.BringToFront();
                await Task.Delay(5000);
            }
        }

panel değiştirme kodlarım böyle, video kaydını aşağıya koydum.
 
Son düzenleme:
hocam GetPanels methodunu form1_load içerisinde çağırdım sadece panelHsogldn'de kalıyor


pardon düzeltiyim, form yüklendikten 10 saniye boyunca panelHsogldn'de kalıyor, ondan sonra 10-15 sn donuyor, ondan sonrada ekran bomboş kalıyor

belki veri çekme işleminde bi hata vardır dedim, ayrı olan 2 projede haber çekme ve tarihte bugün ne olduğu verisini sıkıntısız çekiyor.


Kod:
        private async void anaekran_Load(object sender, EventArgs e)
        {
            await HaberleriGetir();
            await OlaylariListeleAsync();
            while (true)
            {
                // Hoşgeldin Paneli
                panelHosgldn.Visible = true;
                panelHaberler.Visible = false;
                panelTarihteBugun.Visible = false;
                panelHosgldn.BringToFront();
                await Task.Delay(5000);

                // Haberler Paneli
                panelHosgldn.Visible = false;
                panelHaberler.Visible = true;
                panelTarihteBugun.Visible = false;
                panelHaberler.BringToFront();
                await Task.Delay(5000);

                // Tarihte Bugün Paneli
                panelHosgldn.Visible = false;
                panelHaberler.Visible = false;
                panelTarihteBugun.Visible = true;
                panelTarihteBugun.BringToFront();
                await Task.Delay(5000);
            }
        }

panel değiştirme kodlarım böyle, video kaydını aşağıya koydum.
Diğer işlemler threadi blockluyor olabilir. Denemedim ama attığım kodda bir sorun göremedim.
Sizin yaptığınız, benim ilk attığımla aynı. Tekrar etmeye gerek duymamak için döngü oluşturdum. Ayrıca BringToFront'a gerek yok. ChatGPT yapmış yine yapacağını :D
 
hocam bikaç saat önce video kaydı atacağımı söylemiştim ama atamadım. atıyorum şimdi sorun dahada açık olur umarım.
Diğer işlemler threadi blockluyor olabilir. Denemedim ama attığım kodda bir sorun göremedim.
Sizin yaptığınız, benim ilk attığımla aynı. Tekrar etmeye gerek duymamak için döngü oluşturdum. Ayrıca BringToFront'a gerek yok. ChatGPT yapmış yine yapacağını :D


@Bayram Reis hocam izledinmi videoyu
 
Son düzenleme:
hocam bikaç saat önce video kaydı atacağımı söylemiştim ama atamadım. atıyorum şimdi sorun dahada açık olur umarım.



@Bayram Reis hocam izledinmi videoyu
İzledim. Sanırım donmasından rahatsızsınız. Main Thread'in blocklanmasından kaynaklanıyor. Şu videoyu sonuna kadar, anlamak için izlerseniz; sorununuzu çözmek yerine öğrenirsiniz:
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
İzledim. Sanırım donmasından rahatsızsınız. Main Thread'in blocklanmasından kaynaklanıyor. Şu videoyu sonuna kadar, anlamak için izlerseniz; sorununuzu çözmek yerine öğrenirsiniz:
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

ondanda rahatsızım ama önceliğim o değil, normalde 3 panelde üst üste olması lazım fakat doğru düzgün gösterilmiyor paneller. mesela 2. panel açık durumdayken sadece arkaplan rengi gösteriliyor diğer listbox ve label gözükmüyor. aynı durum 3. panel içindde geçerli. ordada sadece textboxta yazılanları gösteriyor. labeli göstermiyor.
 
ondanda rahatsızım ama önceliğim o değil, normalde 3 panelde üst üste olması lazım fakat doğru düzgün gösterilmiyor paneller. mesela 2. panel açık durumdayken sadece arkaplan rengi gösteriliyor diğer listbox ve label gözükmüyor. aynı durum 3. panel içindde geçerli. ordada sadece textboxta yazılanları gösteriyor. labeli göstermiyor.
Designer kodu bozulmuş olabilir. Projeyi başlatmadan önce 3ünü de görebiliyor musunuz? Ayrıca constructor'a çizgi ekleyin ve debug edin.
 

Technopat Haberler

Geri
Yukarı