none
Bir Form İçerisinde Farklı Formları Çalıştırmanın En İyi Yolu RRS feed

  • Genel Tartışma

  • C# üzerinde ortak bir form çatısı altında ve tek arayüzde çeşitli farklı formları çağırıp çalıştırabilen basit bir yazılım üzerinde çalışıyorum.

    Form1, Form2, Form3, Form4 ve Form5 adında içerisinde birçok nesne ve karar yapısı içeren formları bir MainForm altında ortak ekran içerisinde çalıştırmayı amaçlıyorum. 

    Bu yazılımın modüllerini farklı farklı formlarda oluşturmak istememin sebebi olarak tek bir form içerisinde farklı amaçlı butonları ve nesneleri kullanarak kodları karar yapılarıyla boğmamak ve kod yoğunluğunu kırmak olarak özetleyebilirim.

    Bu yazılımla ilgili en önemli gereklilik, oluşturulan bütün Form'ların MainForm arayüzü içerisinde kullanılacak olmasıdır. Yani tek bir ekran özelinde çalışan programda seçimlere göre ilgili Form'ların çağrılmasını istiyorum.

    Burada sormak istediğim soru ise yazılımı en yüksek verimle çalıştırabilmek için hangi ve ne gibi yöntemler kullanmalıyım?

     

    ●  MainForm içerisinde MDI Child alt formlar oluşturarak kullanmak  

    ●  MainForm içerisinde bir Panel oluşturup formları bu panele bağlayarak kullanmak

    ●  Bunlar dışında bilmediğim faydalı olacak herhangi bir C# yöntemi

    17 Şubat 2018 Cumartesi 14:57

Tüm Yanıtlar

  • tabcontrol ile sekmeler halinde formlarınızı açabilirsiniz

    public void YeniSayfa(Form frm, string isim)
            {
               
    TabPage tab = new TabPage(isim);
                    frm.TopLevel = false;
                    frm.Parent = tab;
                    frm.Visible = true;
                    frm.Dock = DockStyle.Fill;
                    tabControl1.TabPages.Add(tab);
                    frm.Location = new Point((tab.Width - frm.Width) / 2, (tab.Height - frm.Height) / 2);
                    tabControl1.SelectedTab = tab;
                    tab.ImageIndex = 0;
                    tab.AutoScroll = true;
                
            }
    
    formu çağırmak için
    
    Form2 frm = new Form2();
    YeniSayfa(frm, "Sekme Adı");

    17 Şubat 2018 Cumartesi 17:52
  • Bu bir tasarım tercihi olduğu için "en iyi yol" olduğunu düşünmüyorum. Microsoft, Google gibi büyük firmaların tasarım sistemleri var onları inceleyebilirsiniz. Örneğin Google'ın önerisi için "Material Design Guidelines" şeklinde arama yapabilirsiniz.

    www.cihanyakar.com



    18 Şubat 2018 Pazar 10:02
  • Bu bir tasarım tercihi olduğu için "en iyi yol" olduğunu düşünmüyorum. Microsoft, Google gibi büyük firmaların tasarım sistemleri var onları inceleyebilirsiniz. Örneğin Google'ın önerisi için "Material Design Guidelines" şeklinde arama yapabilirsiniz.

    www.cihanyakar.com



    Bu soruyu özellikle sormamın sebebi birçok yabancı dil içerikli sitelerde örnek olarak MDI Child alt forumlar şeklinde formları çağırarak oluşturulan winformun ileride yavaşlayacağı ve tavsiye edilmediğini gördüm. Tabi buna karşın alternatif bir yöntemden de bahsedilmemiş veya ben yeterince faydalanamadım. Bu nedenle özelikle sormak istedim çünkü benim yapacağım yazılım birkaç formdan oluşan aslında çok fazla ağır olmadığını düşündüm bir yazılım; görsel ögeleri bol olduğu için de emin olamadım.
    18 Şubat 2018 Pazar 13:28
  • WFA artık bu tip esnek yapıları sağlaması konusunda yetersiz veya yavaş kalıyor, genelde de kasıntı bir kodlama ortamı oluşturuyor. WPF + MVVM çatısı altında dinamik bir uygulama yapabilirsiniz. Aylar hatta belki yıllarınızı alabilecek kadar derinliğe sahip bir teknoloji ancak gelecekte WPF'e zorunlu oarak geçmeniz durumunda sudan çıkmış balığa dönersiniz. WFA sürükle bırak ve kolay kullanım imkanları sayesinde insanları cezbediyor ancak algoritmik çalışmaktan uzaklaştırıyor, dikkat edilmesi gereken ince bir konudur. (Sadece kişisel fikrimi belirttim.)

    WPF ile tek bir Window (WFA'da Form diye adlandırılıyor) içinde istediğiniz her şeyi rahatlıkla yapabilirsiniz. Üstelik MVVM sayesinde code behind'a değil direkt esnek bir yapı üzerine yazdığınız için olduğu gibi söküp başka bir projede aynen kullanabilirsiniz. Ön kısımda XAML ile nesneler arası iletişimi de code behind'a gerek kalmadan binding ve diğer özelliklerle rahatlıkla yapabiliyorsunuz.


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


    18 Şubat 2018 Pazar 21:13
  • WFA artık bu tip esnek yapıları sağlaması konusunda yetersiz veya yavaş kalıyor, genelde de kasıntı bir kodlama ortamı oluşturuyor. WPF + MVVM çatısı altında dinamik bir uygulama yapabilirsiniz. Aylar hatta belki yıllarınızı alabilecek kadar derinliğe sahip bir teknoloji ancak gelecekte WPF'e zorunlu oarak geçmeniz durumunda sudan çıkmış balığa dönersiniz. WFA sürükle bırak ve kolay kullanım imkanları sayesinde insanları cezbediyor ancak algoritmik çalışmaktan uzaklaştırıyor, dikkat edilmesi gereken ince bir konudur. (Sadece kişisel fikrimi belirttim.)

    WPF ile tek bir Window (WFA'da Form diye adlandırılıyor) içinde istediğiniz her şeyi rahatlıkla yapabilirsiniz. Üstelik MVVM sayesinde code behind'a değil direkt esnek bir yapı üzerine yazdığınız için olduğu gibi söküp başka bir projede aynen kullanabilirsiniz. Ön kısımda XAML ile nesneler arası iletişimi de code behind'a gerek kalmadan binding ve diğer özelliklerle rahatlıkla yapabiliyorsunuz.


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


    VS derleyici de C# kullanarak WFA bilgim, kendim yapmak istediğim yazılım için gereken alt modüllerde alt formlarda hayli yeterli düzeyde olduğunu düşünüyorum; buna karşın hem WPF hemde MVVM hakkında en ufak bir bilgiye sahip değilim; bu konuda bana önerebileceğiniz kendimi geliştirebileceğim başta yerli kaynak yoksa yabancı kaynak bulunuyor mu acaba? WPF düşüncenizi bizzat dikkate alarak tecrübe etmek istiyorum; bunun için de önce yeterli düzeye gelmeye ihtiyacım var. 
    27 Şubat 2018 Salı 22:15
  • WPF (Windows Presentation Foundation), WinForms'dan sonraki yeni nesil arayüz teknolojisi.

    Microsoft'un Türkçe altyazılı tanıtım videosu (not: düzgün çevrilmiş, makine çevirisi değil): https://channel9.msdn.com/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-TRK/Windows-Presentation-Foundation-Application-Development-TRK

    2016 basımlı bir Türkçe kitap: http://www.kitapyurdu.com/kitap/visual-c-ve-visual-basic-ornekleriyle-wpf-tabanli-nesneye-yonelik-gorsel-programlama/387166.html&filter_name=wpf

    Bir blog yazısı (çok ilginç, yabancı eğitim sitesinde ama Türkçe): https://www.pluralsight.com/guides/microsoft-net/wpf-uygulamalarnda-attached-property-ler-ile-coklu-dil-destegi
    28 Şubat 2018 Çarşamba 09:42
  • ben bir projemde menuStript' leri kullanmıştım mesela 2 tane menuStript butonların var ve bunların isimleri MENU1 ve MENU2 bunlarında alt menuleri var mesela MENU1 de giriş,gelişme,sonuç olarak 3 tane bu alt menulerin hepsi ayrı bir form ve hepsini MainForm' un altında açabilirsin. aynı olay MENU2 dede geçerli olacak işini görür diye düşünüyorum



    • Düzenleyen Berkay SRN 1 Mart 2018 Perşembe 11:19
    28 Şubat 2018 Çarşamba 09:54
  • AlgexSix kanalını şiddetle önerebilirim. Ücretsiz ve detaylı bir eğitim serisidir, buradan başlayıp gerisini kendiniz de getirebilirsiniz.

    TR| Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz. EN| If this is the answer to your problem, mark "Propose as Answer" and if it is helpful, you can contribute to the workig of the forum by "Voting".

    1 Mart 2018 Perşembe 09:39