Monodevelop C# ve GTK Konteynerleri ve Bileşenleri

İçindekiler
GTK #, tasarımı oluşturabilmemiz için bir penceredeki widget'ların konumunu konteynırlar aracılığıyla kontrol etmemizi sağlar. Farklı özelliklere sahip olan ve bileşenlerin veya widget'ın bir pencere içindeki tasarımına ve yerleştirilmesine rehberlik etmeye hizmet eden bu kaplar.
NS ana kaplar NS:
  • Yatay veya dikey kutulu konteynerler
  • Tablolu Konteynerler
  • Sabit konteyner
  • Çerçeveler veya Çerçeve Konteyneri

Uygulamamızın ihtiyaç veya gereksinimlerine göre konteynerler nasıl kullanılır
Yatay veya dikey kutulu konteynerler
Windows altında programlamaya ve onun sürükle-bırak arayüz tasarım metodolojisine alışmışsak, bu tip kap muhtemelen daha iyidir, çünkü widget'lar veya bileşenler pencerede x koordinatları kullanılarak konumlandırılır ve Windows'ta bu nasıl takdir edilir.
Bu Gtk ve monodevelop ile mümkün olsa da, widget'ları hizalamanın en iyi yolu kutularla. İki tür kutu vardır yatay veya HBox ve dikey veya VBox. Bu kap türü, ekran boyutuna bağlı değildir. HBox ve VBox kapsayıcıları, bir bileşenin kapladığı bölgenin otomatik olarak yeniden boyutlandırılmasıyla ilgilenir.
Yatay veya dikey kutularla bir örnek görelim. Monodevelop'ta bir C# ve Gtk projesi oluşturacağız.
Bir Vbox kapsayıcı atadık ve son satırda bir Hbox kapsayıcı ekliyoruz.

Ardından Hbox'ın son hücresine bir buton ekleyeceğiz. Özelliklerde bt adını atadık Kabul etmek ve etikette adı Kabul etmek.

Uygulamayı şuradan çalıştırırsak Çalıştır menüsü> Hata Ayıklamayı Başlat veya anahtar ile F5, diğer hücreler boş olduğu için düğmenin ekranın sol üst kısmında hizalandığını göreceğiz bu nedenle gösterilmemiştir.

Bunu çözmek için Aligment kapsayıcısını kullanabilir ve pencerenin tasarımını korumak için boş yerlere koyabiliriz.

Uygulamayı menüden tekrar çalıştırıyoruz Çalıştır> Hata Ayıklamayı Başlat veya F5 tuşuyla, düğmenin artık yerleştirdiğimiz yerde gösterildiğini ve ekran düzenine uygun olduğunu göreceğiz. Artık diğer widget'ları eklemeye devam edebiliriz.

gibi bazı bileşenleri ekleyelim. Takvim merkez hücresinde sanal kutu ve Menü çubuğu üst hücrede Vbox, Sonuç aşağıdaki gibidir:

Tablolu Konteyner
Bu kapsayıcı türü, veri giriş ekranı gibi widget'ları yerleştirebileceğimiz bir ızgara oluşturmamız gerektiğinde yararlı olabilecek satırlar ve sütunlar içeren bir ızgaradır. Tablo ile bir örnek görelim. Monodevelop'ta bir C# ve Gtk projesi oluşturacağız, bir veri giriş formu oluşturacağız.
Bir Vbox konteyneri imzalıyoruz ve son satırda bir Hbox konteyneri ekliyoruz, önceki projede olduğu gibi bir Menubar ve aşağıdaki butonları ekliyoruz, ortada bir tablo konteyneri ekliyoruz.

Varsayılan tablo kapsayıcısının 3 satırı ve 3 sütunu vardır, şimdi tablodaki her hücrenin içerdiği nesneye göre yeniden boyutlandırıldığını dikkate alarak Widget'ı ekleyeceğiz. Satır veya sütun eklemek veya kaldırmak için satıra sağ tıklıyoruz ve ardından satır veya sütun sil veya ekle seçenek tablosuna gidiyoruz.
Son satırı kaldıralım ve ardından ilk satırın ilk hücresine Etiketler için bir Vox kapsayıcı ekleyeceğiz. Ardından, ilk satırın ikinci hücresine Giriş veya metin kutuları için bir Vox kabı ekleyeceğiz.

Her kontrolün özelliklerini daha iyi konumlandırmak için tanımlayabiliriz, Etiketler durumunda, özelliğin ayarlanması gerekecektir. Dolgu malzemesi metin kutularının seviyesine ayarlamak için, her bir Etikette 5 piksellik bir dolgu ile yeterli olacaktır.

Kullanıcının fotoğrafını kaydetmek ve görüntülemek için gerekli bileşenleri ekleyeceğiz, ilk Vbox'ta onlar için, telefon etiketinin hücresine sağ tıklamak vbox'a bir hücre eklememize izin veriyor, ayrıca bir hücre ekleyeceğiz. diğer vbox.
Şimdi bir ekleyeceğiz etiket Fotoğraf ve bir widget Dosya Seçici Dosyayı seçmek için düğme, Ayrıca tablonun üçüncü satırına fotoğrafı gösterecek olan bir Görüntü widget'ı ekleyeceğiz, bu durumda görüntünün uygulamanın derleme dizininde olduğunu dikkate almalıyız. hata ayıklama yürütülürken otomatik olarak oluşturulur. Seçilen resim 100 piksel yüksekliğinde ve 100 piksel genişliğindedir.

Sabit Konteyner
Sabit kaplar, widget'ı sabit konumlarda ve sabit boyutlarda sürükleyip bırakmamıza izin verir. Bu kap, herhangi bir otomatik düzen yönetimi gerçekleştirmez ve pencere öğelerini yeniden boyutlandırmaz. Oyunlar, diyagramlarla veya OpenGL veya 3D gibi grafiklerle çalışan özel uygulamalar gibi daha sonra kod tarafından yönetilecek widget'ların gerekli olduğu bazı uygulamalarda kullanılırlar.
Sabit bir kap ve birkaç resim koyacağımız bir örnek görelim.

Arka plana bir Image Widget'ı, bir uçakla arka plana başka bir Image Widget'ı ve arka planda bir golfçü resmiyle başka bir Image Widget'ı koyduk. Her görüntü sabit bir koordinattadır, o zaman bir oyun olsaydı hareket veya animasyonun etkisini elde etmek için koordinatları kodla yönetebiliriz.
Çerçeveler veya Çerçeve Konteyneri
Çerçeveler veya Çerçeveler Visual Studio'da olduğu gibi Groupbox denetimi kullanılır, içinde bir widget grubu barındırmak için kullanılırlar, Bir çerçevenin amacı grup widget'ını kategorilere veya ilgili bölümlere göre tanımlamaktır, isteğe bağlı olarak bir başlığı olabilir. Başlığın konumu ve kutunun stili özelliklerden yapılandırılır.
Başlığın etiketi çerçevenin sol üst köşesinde görünür. Başlık girilmezse, boş olacak ve başlık görüntülenmeyecektir. Etiket metni, kullanılarak değiştirilebilir. Etiket özelliği.
İçinde Çerçeve yukarıdaki kaplardan herhangi birini birleştirebilirsiniz ve bunun tersi de geçerlidir.
Bir ekran oluşturalım Ana / Detay, çerçeveler kullanarak. bir oluşturacağız Monodevelop'ta C# ve Gtk projesi ve 4 satırlık bir Vbox konteyneri imzalıyoruz ve ilk satıra bir Menü çubuğu,
İkinci satırda bir çerçeve kabı ekliyoruz, etiketin başlığı ürünler olacak ve ona gölgeli bir IN atayacağız.

Çerçevenin içine bir veri giriş formu oluşturmak için 4 satır ve 3 sütunlu bir Tablo kabı ekliyoruz ve tablodaki son orta satırda düğmeler için iki kutulu bir Hbox koyuyoruz gravür Y İptal.
Vbox'ın üçüncü satırına Horizontal Separator widget'ı ile bir ayırıcı çubuk koyuyoruz ve Vbox'ın son satırına başka bir çerçeve ve bir Treeview koyacağız.

Her şeyin düzgün bir şekilde hizalanması için her bir parçacığın dolgu özelliğine dokunmamız gerektiğini unutmayın. tvwlista adını vereceğimiz Treeview'i doldurmak için Mainwindows sınıfında c # kodunu kullanacağız ve bu kod aşağıdaki gibi olacaktır:
 public MainWindow(): base (Gtk.WindowType.Toplevel) {Build(); // Ağaç görünümünün sütunlarını ve başlıklarını oluşturuyorum // Ürün sütununu oluşturuyorum Gtk.TreeViewColumn Product col = new Gtk.TreeViewColumn (); colProducto.Title = "Ürün"; // Gtk.TreeViewColumn stok sütununu oluşturuyorum colStock = new Gtk.TreeViewColumn (); colStock.Title = "Stok"; // Gtk.TreeViewColumn pricecol = new Gtk.TreeViewColumn() fiyat sütununu oluşturuyorum; colPrice.Title = "Fiyat"; // Sütunları ağaç görünümünde tvwlista.AppendColumn (colProduct); tvwlista.AppendColumn (colStock); tvwlista.AppendColumn (pricecol); // Saklamak için bir veri modeli oluşturuyorum ve burada üç veri türü ekleyeceğim text Gtk.ListStore store = new Gtk.ListStore (typeof (string), typeof (string), typeof (string)); // Modeli TreeView tvwlista'ya atıyorum.Model = store; // Model deposuna veri ekliyorum.AppendValues ​​​​("TABLET SAMSUNG", "5", "175"); store.AppendValues ​​​​("MACBOOK PRO", "10", "2680"); store.AppendValues ​​​​("SEGATE DISK 1 TB", "10", "85"); // Gtk.CellRendererText productCell = new Gtk.CellRendererText() ürününü gösterecek bir hücre oluşturuyoruz; // colProduct.PackStart (productCell, true) ürün veri hücresini ekliyoruz; // Stok veri hücresini ekleyin Gtk.CellRendererText cellStock = new Gtk.CellRendererText (); colStock.PackStart (cellStock, doğru); // Fiyat veri hücresini ekleyin Gtk.CellRendererText PriceCell = new Gtk.CellRendererText (); pricecol.PackStart (priceCell, doğru); // Veri hücrelerini her sütuna ekliyoruz ve satırlar oluşturulacak // colProducto.AddAttribute (cellProducto, "text", 0); colStock.AddAttribute (cellStock, "metin", 1); priceCol.AddAttribute (priceCell, "metin", 2); } 
Sonra çalıştırıyoruz ve sonuç şu olacak:

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave