Aracılığıyla paylaş


ToolStrip Denetim Mimarisi

ToolStrip ve ToolStripItem sınıfları araç çubuğu, durum ve menü öğelerini görüntülemek için esnek, genişletilebilir bir sistem sağlar. Bu sınıfların tümü System.Windows.Forms ad alanında bulunur ve bunların tümü genellikle "ToolStrip" ön eki (ToolStripOverflowgibi) veya "Şerit" son eki (MenuStripgibi) ile adlandırılır.

ToolStrip

Aşağıdaki konularda ToolStrip ve ondan türetilen denetimler açıklanmaktadır.

ToolStrip, MenuStrip, StatusStripve ContextMenuStripiçin soyut temel sınıftır. Aşağıdaki nesne modeli ToolStrip devralma hiyerarşisini gösterir.

ToolStrip nesne modelini gösteren Diyagramı.

ToolStrip koleksiyonu aracılığıyla bir Items içindeki tüm öğelere erişebilirsiniz. ToolStripDropDownItem koleksiyonu aracılığıyla bir DropDownItems içindeki tüm öğelere erişebilirsiniz. ToolStriptüretilmiş bir sınıfta, yalnızca o anda görüntülenen öğelere erişmek için DisplayedItems özelliğini de kullanabilirsiniz. Bunlar, şu anda taşma menüsünde olmayan öğelerdir.

Özellikle aşağıdaki öğeler, hem ToolStripSystemRenderer hem de ToolStripProfessionalRenderer ile tüm yönlerde sorunsuz çalışacak şekilde tasarlanmıştır. Bunlar, ToolStrip denetimi için tasarım zamanında varsayılan olarak kullanılabilir:

MenuStrip, MainMenuyerine geçen en üst düzey kapsayıcıdır. Ayrıca anahtar işleme ve birden çok belge arabirimi (MDI) özelliği sağlar. İşlevsel olarak, ToolStripDropDownItem ve ToolStripMenuItem, MenuStrip'ten türetilmiştir, ancak ToolStripItemile birlikte çalışır.

Özellikle aşağıdaki öğeler, hem ToolStripSystemRenderer hem de ToolStripProfessionalRenderer ile tüm yönlerde sorunsuz çalışacak şekilde tasarlanmıştır. Bunlar, MenuStrip denetimi için tasarım zamanında varsayılan olarak kullanılabilir:

Durum Çubuğu

StatusStrip, StatusBar denetiminin yerini alır. StatusStrip'nin özel özellikleri, özel bir tablo düzeni, formun boyutlandırma ve taşıma kavramaları desteği ve Spring'nin kullanılabilir alanı otomatik olarak doldurmasını sağlayan ToolStripStatusLabel özelliğini içerir.

Özellikle aşağıdaki öğeler, hem ToolStripSystemRenderer hem de ToolStripProfessionalRenderer ile tüm yönlerde sorunsuz çalışacak şekilde tasarlanmıştır. Bunlar, StatusStrip denetimi için tasarım zamanında varsayılan olarak kullanılabilir:

"ContextMenuStrip"

ContextMenuStrip, ContextMenu'in yerini alır. Bir ContextMenuStrip herhangi bir denetimle ilişkilendirebilirsiniz ve sağ tıklama bağlam menüsünü (veya kısayol menüsünü) otomatik olarak görüntüler. ContextMenuStrip yöntemini kullanarak program aracılığıyla bir Show gösterebilirsiniz. ContextMenuStrip, iptal edilebilir Opening ve Closing olaylarını, dinamik popülasyonu ve çoklu tıklama senaryolarını işlemek için destekler. ContextMenuStrip görüntüleri, menü öğesi denetim durumunu, metni, erişim tuşlarını, kısayolları ve basamaklı menüleri destekler.

Özellikle aşağıdaki öğeler, hem ToolStripSystemRenderer hem de ToolStripProfessionalRenderer ile tüm yönlerde sorunsuz çalışacak şekilde tasarlanmıştır. Bunlar, ContextMenuStrip denetimi için tasarım zamanında varsayılan olarak kullanılabilir:

ToolStrip Genel Özellikleri

Aşağıdaki konularda, ToolStrip ve türetilmiş denetimler için genel olan özellikler ve davranışlar açıklanmaktadır.

Resim

ToolStrip denetimlerinde çeşitli yollarla özel boyama yapabilirsiniz. Diğer Windows Forms denetimlerinde olduğu gibi, hem ToolStrip hem de ToolStripItem geçersiz kılınabilir OnPaint yöntemleri ve Paint olayları vardır. Normal boyamada olduğu gibi koordinat sistemi de denetimin istemci alanına göredir; yani denetimin sol üst köşesi 0, 0'dır. Paint için OnPaint etkinliği ve ToolStripItem yöntemi diğer denetim boya olayları gibi çalışır.

ToolStrip denetimleri, ToolStripRenderer sınıfı aracılığıyla, ToolStrip'nin arka planı, öğe arka planı, öğe resmi, öğe oku, öğe metni ve kenarlığını boyamak için geçersiz kılınabilir yöntemler sunarak, öğelerin ve kapsayıcının işlenmesine daha ayrıntılı bir erişim sağlar. Bu yöntemlerin olay bağımsız değişkenleri dikdörtgenler, renkler ve istediğiniz gibi ayarlayabileceğiniz metin biçimleri gibi çeşitli özellikleri kullanıma sunar.

Bir öğenin boyanma şeklinin yalnızca birkaç yönünü ayarlamak için genellikle ToolStripRenderergeçersiz kılarsınız.

Yeni bir öğe yazıyorsanız ve tablonun tüm yönlerini denetlemek istiyorsanız, OnPaint yöntemini geçersiz kılın. OnPaintiçinden ToolStripRendereryöntemlerini kullanabilirsiniz.

Varsayılan olarak ToolStrip, OptimizedDoubleBuffer ayarından faydalanarak çift arabelleklidir.

Ebeveyn -lik

Kapsayıcı sahipliği ve ebeveynlik kavramı, ToolStrip denetimlerinde diğer Windows Forms kapsayıcı denetimlerine göre daha karmaşıktır. Bu, taşma gibi dinamik senaryoları, açılır liste öğelerini birden fazla ToolStrip öğesi arasında paylaşmayı ve bir denetimden ContextMenuStrip oluşturmayı desteklemek için gereklidir.

Aşağıdaki listede ebeveynlikle ilgili üyeler ve bunların kullanımı açıklanmaktadır.

Devralınan Denetimlerin Davranışı

Devralmada her kullanıldıklarında aşağıdaki denetimler kilitlenir:

Örneğin, önceki listedeki denetimlerden birini veya daha fazlasını kullanarak yeni bir Windows Forms uygulaması oluşturun. Bir veya daha fazla denetimin erişim değiştiricisini public veya protectedolarak ayarlayın ve projeyi oluşturun. İlk formdan devralan bir form ekleyin ve devralınan bir denetim seçin. Denetim kilitli görünür ve erişim değiştiricisi privategibi davranır.

ToolStripContainer Devralma Desteği

ToolStripContainer denetimi, aşağıdaki örneğe benzer şekilde sınırlı devralınan senaryoları destekler:

  1. Yeni bir Windows Forms uygulaması oluşturun.

  2. Forma bir ToolStripContainer ekleyin.

  3. ToolStripContainer erişim değiştiricisini public veya protectedolarak ayarlayın.

  4. ToolStrip MenuStrip bölgelerine ContextMenuStrip, ToolStripPanelve ToolStripContainer denetimlerinin herhangi bir bileşimini ekleyin.

  5. Projeyi oluşturun.

  6. İlk formdan devralan bir form ekleyin.

  7. Formdaki devralınan ToolStripContainer'ı seçin.

Alt Denetimlerin Devralınan Davranışı

Önceki adımları tamamladıktan sonra aşağıdaki devralınan davranış oluşur:

  • Tasarımcıda kontrol devralınmış bir simgeyle görünür.

  • ToolStripPanel denetimleri kilitlenir; içeriğini seçemez veya yeniden düzenleyemezsiniz.

  • ToolStripContentPanel'e denetimler ekleyebilir, denetimleri taşıyabilir ve ToolStripContentPanel'in alt denetimleri haline getirebilirsiniz.

  • Form derledikten sonra değişiklikleriniz devam eder.

    Uyarı

    Bir ToolStripPanelparçası olan tüm ToolStripContainer denetimlerinden erişim değiştiricilerini kaldırın. ToolStripContainer erişim değiştiricisi tüm denetimi yönetir.

Kısmi Güven

Kısmi güven altındaki ToolStripsınırlamaları, yetkisiz kişiler veya hizmetler tarafından kullanılabilecek kişisel bilgilerin yanlışlıkla girilmesini önlemek için tasarlanmıştır. Koruyucu önlemler aşağıdaki gibidir:

  • ToolStripDropDown denetimleri, AllWindowsiçerisinde öğeleri görüntülemek için ToolStripControlHost gerektirir. Bu, hem ToolStripTextBox, ToolStripComboBox, hem de ToolStripProgressBar gibi iç denetimlerin yanı sıra kullanıcı tarafından oluşturulan denetimler için de geçerlidir. Bu gereksinim karşılanmazsa, bu öğeler görüntülenmez. İstisna atılmaz.

  • AutoClose özelliğinin false olarak ayarlanmasına izin verilmez ve iptal edilebilir Closing olay parametresi yoksayılır. Bu, açılan öğeyi kapatmadan birden fazla tuş vuruşu girmeyi imkansız hale getirir. Bu gereksinim karşılanmazsa, bu tür öğeler görüntülenmez. İstisna atılmaz.

  • Birçok tuş vuruşu işleme olayı, AllWindowsdışındaki kısmi güven bağlamlarında gerçekleşirse tetiklenmez.

  • erişim anahtarları, AllWindows verilmediğinde işlenmez.

Kullanım

Aşağıdaki kullanım düzenlerinin ToolStrip düzeni, klavye etkileşimi ve son kullanıcı davranışıyla bir ilgisi vardır:

  • ToolStripPanel'a katıldı

    ToolStrip ToolStripPanel içinde ve ToolStripPanelarasında yeniden konumlandırılabilir. Dock özelliği yoksayılır ve Stretch özelliği falseise, öğeler ToolStripeklendikçe ToolStripPanel boyutu büyür. Genellikle, ToolStrip sekme sırasına katılmaz.

  • Bağlandı

    ToolStrip sabit bir konumda bir kapsayıcının bir tarafına yerleştirilir ve boyutu bağlandığı tüm kenar boyunca tamamen genişler. Genellikle, ToolStrip sekme sırasına katılmaz.

  • Kesinlikle konumlandırıldı

    ToolStrip, Location özelliği tarafından yerleştirilmesi, sabit bir boyuta sahip olması ve genellikle sekme sırasına katılması gibi diğer denetimler gibidir.

Klavye Etkileşimi

Erişim Anahtarları

ALT tuşuyla birlikte veya bu tuşlardan sonra erişim tuşları, klavyeyi kullanarak bir denetimi etkinleştirmenin bir yoludur. ToolStrip hem açık hem de örtük erişim anahtarlarını destekler. Açık tanım, harfin önünde bir ampersand (&) karakteri kullanır. Örtük tanım, belirli bir Text özelliğindeki karakterlerin sırasına göre eşleşen bir öğe bulmaya çalışan bir algoritma kullanır.

Kısayol Tuşları

Bir MenuStrip tarafından kullanılan kısayol tuşları, kısayol tuşunu tanımlamak için Keys numaralandırmasının (düzene özgü olmayan) bir bileşimini kullanır. ShortcutKeyDisplayString özelliğini yalnızca metin içeren bir kısayol tuşu görüntülemek için de kullanabilirsiniz; örneğin, "Sil" yerine "Del" değerini görüntüleyebilirsiniz.

ALT tuşu, MenuStriptarafından işaret edilen MainMenuStrip etkinleştirir. Buradan, CTRL+SEKME tuşları ToolStripiçindeki ToolStripPanel denetimleri arasında gezinmektedir. SEKME tuşu ve sayısal tuş takımındaki ok tuşları, ToolStripiçindeki öğeler arasında gezinmenizi sağlar. Özel bir algoritma taşma bölgesindeki gezintiyi işler. ARA ÇUBUĞU bir ToolStripButton, ToolStripDropDownButtonveya ToolStripSplitButtonseçer.

Odak ve Doğrulama

ALT tuşu tarafından etkinleştirildiğinde, MenuStrip veya ToolStrip genellikle odağı şu anda odağın bulunduğu denetimden almaz veya kaldırmaz. MenuStrip içerisinde barındırılan bir denetim veya MenuStrip'in açılır listesinde bulunan bir denetim varsa, kullanıcı SEKME tuşuna bastığında denetim odaklanır. Genel olarak, GotFocus, LostFocus, Enterve Leave olayları, klavye ile etkinleştirildiklerinde, MenuStrip tarafından tetiklenmeyebilir. Böyle durumlarda bunun yerine MenuActivate ve MenuDeactivate olaylarını kullanın.

Varsayılan olarak, CausesValidationfalseolarak kabul edilir. Doğrulama gerçekleştirmek için formunuzda açıkça Validate çağrısı yapın.

Tasarım Düzeni

ToolStrip özelliğine sahip ToolStripLayoutStyle üyelerinden birini seçerek LayoutStyle düzenini denetleyebilirsiniz.

Yığın Düzenleri

Yığma, ToolStrip'ün her iki ucunda öğelerin yan yana düzenlenmesidir. Aşağıdaki listede yığın düzenleri açıklanmaktadır.

Yığın Düzenlerinin Diğer Özellikleri

Alignment öğenin hizalandığı ToolStrip sonunu belirler.

Öğeler ToolStrip'a sığmadığında, bir aşma düğmesi otomatik olarak görünür. Overflow özellik ayarı, bir öğenin taşma alanında her zaman, gerektiği gibi mi yoksa hiç mi görünmeyeceğini belirler.

LayoutCompleted olayında, bir öğenin ana Placement'ye, taşma ToolStrip'e ya da şu anda hiç gösterilmediği bir duruma yerleştirilip yerleştirilmediğini belirlemek için ToolStrip özelliğini inceleyebilirsiniz. Bir öğenin görüntülenmemesinin tipik nedenleri, öğenin ana ToolStrip sığmaması ve Overflow özelliğinin Neverolarak ayarlanmasıdır.

ToolStrip bir ToolStripPanel koyarak ve GripStyleVisibleolarak ayarlayarak taşınabilir hale getirin.

Diğer Düzen Seçenekleri

Diğer düzen seçenekleri arasında Flow ve Tablebulunmaktadır.

Akış Düzeni

Flow düzeni, ContextMenuStrip, ToolStripDropDownMenuve ToolStripOverflowiçin varsayılandır. Bu, FlowLayoutPanel'ye benzer. Flow düzeninin özellikleri şunlardır:

Tablo Düzeni

Table düzeni, StatusStripiçin varsayılandır. TableLayoutPanelbenzer. Flow düzeninin özellikleri şunlardır:

ToolStripÖğesi

Aşağıdaki konularda ToolStripItem ve ondan türetilen denetimler açıklanmaktadır.

ToolStripItem, bir ToolStripiçine giden tüm öğeler için soyut temel sınıftır. Aşağıdaki nesne modeli ToolStripItem devralma hiyerarşisini gösterir.

ToolStripItem nesne modelini gösteren Diyagramı.

ToolStripItem sınıfları doğrudan ToolStripItem'den devralır veya ToolStripItem veya ToolStripControlHostaracılığıyla dolaylı olarak ToolStripDropDownItem'den devralır.

ToolStripItem denetimleri bir ToolStrip, MenuStrip, StatusStripveya ContextMenuStrip içinde bulunmalıdır ve bir forma doğrudan eklenemez. Çeşitli kapsayıcı sınıfları, ToolStripItem denetimlerin uygun bir alt kümesini içerecek şekilde tasarlanmıştır.

Aşağıdaki tabloda ToolStripItem kontrolleri ve en iyi göründüğü kaplar listelenmektedir. Herhangi bir ToolStrip öğesi ToolStriptüretilmiş herhangi bir kapsayıcıda barındırılsa da, bu öğeler aşağıdaki kapsayıcılarda en iyi şekilde görünecek şekilde tasarlanmıştır:

Uyarı

ToolStripDropDown tasarımcı araç kutusunda görünmez.

Kapsanan öğe ToolStrip Menü Çubuğu "ContextMenuStrip" Durum Çubuğu ToolStripDropDown
ToolStripButton Evet Hayı Hayı Hayı Evet
ToolStripComboBox Evet Evet Evet Hayı Evet
ToolStripSplitButton Evet Hayı Hayı Evet Evet
ToolStripLabel Evet Hayı Hayı Evet Evet
ToolStripSeparator Evet Evet Evet Hayı Evet
ToolStripDropDownButton Evet Hayı Hayı Evet Evet
ToolStripTextBox Evet Evet Evet Hayı Evet
ToolStripMenuItem Hayı Evet Evet Hayı Hayı
ToolStripStatusLabel Hayı Hayı Hayı Evet Hayı
ToolStripProgressBar Evet Hayı Hayı Evet Hayı
ToolStripControlHost Evet Evet Hayı Evet Evet

ToolStripButton (Araç Çubuğu Düğmesi)

ToolStripButton, ToolStripiçin düğme öğesidir. Bunu çeşitli kenarlık stilleriyle görüntüleyebilir ve işlem durumlarını temsil etmek ve etkinleştirmek için kullanabilirsiniz. Aynı zamanda varsayılan olarak odaklanması için tanımlayabilirsiniz.

ToolStripLabel

ToolStripLabel, ToolStrip denetimlerinde etiket işlevselliği sağlar. ToolStripLabel, varsayılan olarak odak almayan ve gönderilen veya vurgulanan şekilde işlenmeyen bir ToolStripButton gibidir.

barındırılan öğe olarak ToolStripLabel erişim anahtarlarını destekler.

LinkColor'te bağlantı denetimini desteklemek için LinkVisited üzerinde LinkBehavior, ToolStripLabelve ToolStrip özelliklerini kullanın.

ToolStripStatusLabel

ToolStripStatusLabel, ToolStripLabel'de kullanılmak üzere özel olarak tasarlanmış bir StatusStrip sürümüdür. Özel özellikler BorderStyle, BorderSidesve Springiçerir.

Araç Çubuğu Ayırıcı

ToolStripSeparator, yönlendirmeye bağlı olarak araç çubuğuna veya menüye dikey veya yatay bir çizgi ekler. Menüdeki öğeler gibi öğeler arasında gruplandırma veya ayrım sağlar.

Tasarım zamanında ToolStripSeparator'ı açılır listeden seçerek ekleyebilirsiniz. Bununla birlikte, tasarımcı şablonu düğümünde veya ToolStripSeparator yönteminde kısa çizgi (-) yazarak da otomatik olarak bir Add oluşturabilirsiniz.

ToolStripControlHost

ToolStripControlHost, ToolStripComboBox, ToolStripTextBoxve ToolStripProgressBariçin soyut temel sınıftır. ToolStripControlHost, özel denetimler de dahil olmak üzere diğer denetimleri iki şekilde barındırabilir:

  • ToolStripControlHost'den türetilmiş bir sınıf ile bir Control oluşturun. Barındırılan denetime ve özelliklere tam olarak erişmek için, Control özelliğini temsil ettiği gerçek sınıfa geri döndürmeniz gerekir.

  • ToolStripControlHostgenişletin ve devralınan sınıfın parametresiz oluşturucusunda, Control'den türetilen bir sınıf geçiren temel sınıf oluşturucuyu çağırın. Bu seçenek, ToolStripiçinde kolay erişim için ortak denetim yöntemlerini ve özelliklerini kapsamanızı sağlar.

ToolStripComboBox (Araç Çubuğu Kombine Kutusu)

ToolStripComboBox, ComboBoxiçin barındırma konusunda optimize edilmiş ToolStrip'dir. Barındırılan denetimin özellikleri ve olaylarının bir alt kümesi ToolStripComboBox düzeyinde kullanıma sunulur, ancak temel alınan ComboBox denetimine ComboBox özelliği aracılığıyla tam olarak erişilebilir.

ToolStripTextBox

ToolStripTextBox, TextBoxiçin barındırma konusunda optimize edilmiş ToolStrip'dir. Barındırılan denetimin özellikleri ve olaylarının bir alt kümesi ToolStripTextBox düzeyinde kullanıma sunulur, ancak temel alınan TextBox denetimine TextBox özelliği aracılığıyla tam olarak erişilebilir.

ToolStripProgressBar

ToolStripProgressBar, ProgressBariçin barındırma konusunda optimize edilmiş ToolStrip'dir. Barındırılan denetimin özellikleri ve olaylarının bir alt kümesi ToolStripProgressBar düzeyinde kullanıma sunulur, ancak temel alınan ProgressBar denetimine ProgressBar özelliği aracılığıyla tam olarak erişilebilir.

ToolStripDropDownItem

ToolStripDropDownItem, öğeleri doğrudan barındırabilen veya bir açılan kapsayıcıda ek öğeleri barındırabilen ToolStripMenuItem, ToolStripDropDownButtonve ToolStripSplitButtoniçin soyut temel sınıftır. Bunu yapmak için, önce DropDown özelliğini bir ToolStripDropDown olarak ayarlayın ve ardından Items'ün ToolStripDropDown özelliğini ayarlayın. Bu açılan öğelere doğrudan DropDownItems özelliği aracılığıyla erişin.

ToolStripMenuItem (Araç Çubuğu Menü Öğesi)

ToolStripMenuItem, menüler için özel vurgulama, düzen ve sütun düzenlemesini işlemek için ToolStripDropDownItem ve ToolStripDropDownMenu ile çalışan bir ContextMenuStrip.

ToolStripAçılırDüğme

ToolStripDropDownButton, ToolStripButtongibi görünür, ancak kullanıcı üzerine tıkladığında açılır bir alan gösterir. ShowDropDownArrow özelliğini ayarlayarak açılır oku gizleyebilir veya gösterebilirsiniz. ToolStripDropDownButton, ToolStripOverflowButton’yi taşan öğeleri görüntüleyen bir ToolStrip'i barındırıyor.

ToolStripAyrıkDüğme

ToolStripSplitButton, düğme ve açılan düğme işlevlerini birleştirir.

Seçilen açılan öğenin DefaultItem olayını düğmede gösterilen öğeyle eşitlemek için Click özelliğini kullanın.

ToolStripItem Genel Özellikleri

ToolStripItem denetimleri devralmak için aşağıdaki genel özellikleri ve seçenekleri sağlar:

  • Temel olaylar

  • Görüntü işleme

  • Hizalama

  • Metin ve görüntü ilişkisi

  • Görüntüleme stili

Çekirdek Olaylar

ToolStripItem denetimleri kendi tıklama, fare ve boya olaylarını alır ve bazı klavye ön işlemleri de gerçekleştirebilir.

Görüntü İşleme

Image, ImageAlign, ImageIndex, ImageKeyve ImageScaling özellikleri, görüntü işlemenin çeşitli yönleriyle ilgilidir. Bu özellikleri doğrudan ayarlayarak veya yalnızca çalışma zamanı ToolStrip özelliğini ayarlayarak ImageList denetimlerindeki görüntüleri kullanın.

Görüntü ölçeklendirme, hem ToolStrip hem de ToolStripItemözelliklerin etkileşimi tarafından aşağıdaki gibi belirlenir:

Hizalama

Alignment özelliğinin değeri, bir öğenin görüntülendiği ToolStrip sonunu belirler. Alignment özelliği yalnızca ToolStrip düzen stili stack overflow değerlerinden birine ayarlandığında çalışır.

Öğeler, öğelerin Öğeler koleksiyonunda göründüğü sırayla ToolStrip üzerine yerleştirilir. Bir öğenin yerleştirildiği yeri program aracılığıyla değiştirmek için Insert yöntemini kullanarak öğeyi koleksiyonda taşıyın. Bu yöntem öğeyi taşır ancak kopyalamaz.

Metin ve Görüntü İlişkisi

TextImageRelation özelliği, ToolStripItemüzerindeki metne göre görüntünün göreli yerleşimini tanımlar. Resim, metin veya her ikisi de içermeyen öğeler, ToolStripItem eksik öğe veya öğeler için boş bir nokta görüntülememesi için özel durumlar olarak değerlendirilir.

Görüntüleme Stili

DisplayStyle, yalnızca istediklerinizi görüntülerken öğenin Metin ve Görüntü özelliklerinin değerlerini ayarlamanıza olanak tanır. Bu genellikle aynı öğe farklı bir bağlamda gösterilirken yalnızca görüntüleme stilini değiştirmek için kullanılır.

Aksesuar Sınıfları

Diğer çeşitli işlevleri sağlayan sınıflar şunlardır:

Ayrıca bakınız