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 System.Windows.Forms tümü ad alanında bulunur ve bunların tümü genellikle "ToolStrip" ön eki (gibi ToolStripOverflow) veya "Şerit" soneki (gibi MenuStrip) ile adlandırılır.

ToolStrip

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

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

Diagram that shows the ToolStrip object model.

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

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

MenuStrip , yerine geçen en üst düzey kapsayıcıdır MainMenu. Ayrıca anahtar işleme ve birden çok belge arabirimi (MDI) özelliği sağlar. İşlevsel olarak ToolStripDropDownItem ve ToolStripMenuItem ile MenuStripbirlikte çalışın, ancak bunlar 'den ToolStripItemtüretilir.

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

StatusStrip

StatusStrip denetimin StatusBar yerini alır. 'nin StatusStrip özel özellikleri arasında özel bir tablo düzeni, formun boyutlandırma ve taşıma kavramaları desteği ve Spring kullanılabilir alanın otomatik olarak doldurulmasına olanak tanıyan ToolStripStatusLabel özellik bulunur.

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

ContextMenuStrip

ContextMenuStrip öğesinin yerini alır ContextMenu. bir öğesini herhangi bir ContextMenuStrip denetimle ilişkilendirebilirsiniz ve sağ fare tıklaması otomatik olarak bağlam menüsünü (veya kısayol menüsünü) görüntüler. yöntemini kullanarak Show program aracılığıyla gösterebilirsinizContextMenuStrip. ContextMenuStrip, dinamik popülasyon ve Closing çok tıklamalı senaryoları işlemek için iptal edilebilir Opening ve olayları destekler. ContextMenuStrip görüntüler, menü öğesi denetim durumu, metin, erişim tuşları, kısayollar ve basamaklı menüleri destekler.

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

ToolStrip Genel Özellikleri

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

Resim

Denetimlerde ToolStrip çeşitli yollarla özel boyama yapabilirsiniz. Diğer Windows Forms denetimlerinde ToolStrip olduğu gibi ve ToolStripItem her ikisi de geçersiz kılınabilir OnPaint yöntemlere ve Paint olaylara sahiptir. Normal boyamada olduğu gibi koordinat sistemi de denetimin istemci alanına göredir; yani denetimin sol üst köşesi 0, 0'dır. bir Paint için ToolStripItem olay ve OnPaint yöntem diğer denetim boya olayları gibi davranır.

Denetimler ToolStrip ayrıca, öğesinin arka planını, öğe arka planını, öğe görüntüsünü, öğe okunu, öğe metnini ve kenarlığı boyamak için geçersiz kılınabilir yöntemleri olan sınıfı aracılığıyla ToolStripRenderer öğelerin ve kapsayıcının işlenmesine ToolStripdaha hassas 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 öğesini ToolStripRenderergeçersiz kılarsınız.

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

Varsayılan olarak, ToolStrip ayarından OptimizedDoubleBuffer yararlanarak iki kez arabelleğe alır.

Ebeveyn -lik

Kapsayıcı sahipliği ve üst öğe kavramı, denetimlerde ToolStrip diğer Windows Forms kapsayıcı denetimlerine göre daha karmaşıktır. Bu, taşma, açılan öğeleri birden çok ToolStrip öğe arasında paylaşma gibi dinamik senaryoları desteklemek ve bir denetimden oluşturulmasını ContextMenuStrip desteklemek için gereklidir.

Aşağıdaki listede, üst öğeyle 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 veya protectedolarak public ayarlayın ve projeyi oluşturun. İlk formdan devralan bir form ekleyin ve devralınan bir denetim seçin. Denetim kilitli görünüyor ve erişim değiştiricisi gibi davranıyor.private

ToolStripContainer Devralma Desteği

Denetim ToolStripContainer , 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. öğesinin erişim değiştiricisini ToolStripContainer veya protectedolarak public ayarlayın.

  4. bölgelerine , MenuStripve denetimlerinin ToolStripToolStripPanel herhangi bir bileşimini ToolStripContainerContextMenuStrip ekleyin.

  5. Projeyi derleyin.

  6. İlk formdan devralan bir form ekleyin.

  7. Formda devralınmış ToolStripContainer öğesini seçin.

Alt Denetimlerin Devralınan Davranışı

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

  • Tasarımcıda denetim devralınan bir simgeyle görüntülenir.

  • Denetimler ToolStripPanel kilitlidir; içeriklerini seçemez veya yeniden düzenleyemezsiniz.

  • içine denetimler ToolStripContentPanelekleyebilir, denetimleri taşıyabilir ve alt denetimleri ToolStripContentPanelyapabilirsiniz.

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

    Dekont

    bir öğesinin parçası ToolStripContainerolan tüm ToolStripPanel denetimlerden erişim değiştiricilerini kaldırın. Tüm denetimin ToolStripContainer erişim değiştiricisi yönetir.

Kısmi Güven

Kısmi güven kapsamı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:

  • ToolStripDropDowndenetimlerinin içindeki öğeleri görüntülemesi ToolStripControlHostgerekirAllWindows. Bu, hem , ToolStripComboBoxve gibi ToolStripTextBoxiç denetimler hem ToolStripProgressBar de kullanıcı tarafından oluşturulan denetimler için geçerlidir. Bu gereksinim karşılanmazsa, bu öğeler görüntülenmez. Özel durum oluşturulmaz.

  • özelliğinin false olarak ayarlanmasına AutoClose 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. Özel durum oluşturulmaz.

  • Dışında kısmi güven bağlamlarında AllWindowsgerçekleşirse birçok tuş vuruşu işleme olayı tetiklenmez.

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

Kullanım

Aşağıdaki kullanım düzenleri düzen, klavye etkileşimi ve son kullanıcı davranışıyla ilgilidir ToolStrip :

  • Bir ToolStripPanel

    ve ToolStrip içinde ToolStripPanel ve arasında ToolStripPanelyeniden konumlandırılabilir. Dock özelliği yoksayılır ve özelliği ise Stretchfalseöğesine öğe eklendikçe ToolStripPanelboyutu ToolStrip büyür. Genellikle, ToolStrip sekme sırasına katılmaz.

  • Sabitlendi

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

  • Kesinlikle konumlandırıldı

    ToolStrip özelliği tarafından Location 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 tuşları

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üne bir ve işareti (&) karakteri ekler. Örtük tanım, belirli Text bir özellikteki karakterlerin sırasına göre eşleşen bir öğe bulmaya çalışan bir algoritma kullanır.

Kısayol Tuşları

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

ALT tuşu ile işaret edilen MainMenuStripöğesini MenuStrip etkinleştirir. Buradan, CTRL+SEKME tuşları s içindeki ToolStripPaneldenetimler arasında ToolStrip gezinmektedir. SEKME tuşu ve sayısal tuş takımındaki ok tuşları, içindeki ToolStripöğeler arasında gezinirken. Ö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. veya öğesinin MenuStrip içinde barındırılan bir MenuStripdenetim varsa, kullanıcı SEKME tuşuna bastığında denetim odak kazanır. Genel olarak, GotFocus, LostFocus, Enterve Leave olayları MenuStrip klavye tarafından etkinleştirildiğinde tetiklenmeyebilir. Böyle durumlarda ve olaylarını MenuActivateMenuDeactivate kullanın.

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

Düzen

özelliğine sahip üyelerinden birini seçerek düzeni denetleyebilirsiniz ToolStripLayoutStyle.ToolStripLayoutStyle

Yığın Düzenleri

Yığma, öğesinin her iki ucundaki öğelerin birbirinin yanında düzenlenmesidir ToolStrip. Aşağıdaki listede yığın düzenleri açıklanmaktadır.

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

Alignment öğenin hizalandığı bitişi ToolStrip belirler.

Öğeler içine ToolStripsığmadığında, otomatik olarak bir taşma düğmesi görüntülenir. Özellik Overflow ayarı, bir öğenin her zaman, gerektiğinde taşma alanında mı yoksa hiç mi görünmeyeceğini belirler.

OlaydaLayoutCompleted, bir öğenin ana ToolStrip, taşma ToolStripveya şu anda hiç gösterilmiyor olup olmadığını belirlemek için özelliğini inceleyebilirsinizPlacement. Bir öğenin görüntülenmeme nedeninin tipik nedenleri, öğenin ana ToolStrip öğeye sığmaması ve Overflow özelliğinin olarak Neverayarlanmasıdır.

bir ToolStrip içine koyarak ve olarak ayarlayarak GripStyle bir ToolStripPanel taşınabilir hale getirinVisible.

Diğer Düzen Seçenekleri

Diğer düzen seçenekleri ve TableşeklindedirFlow.

Akış Düzeni

Flowdüzeni , ToolStripDropDownMenuve ToolStripOverflowiçin ContextMenuStripvarsayılan değerdir. ile benzerdir FlowLayoutPanel. Düzenin Flow özellikleri şunlardır:

Tablo Düzeni

Table düzeni için StatusStripvarsayılandır. ile benzerdir TableLayoutPanel. Düzenin Flow özellikleri şunlardır:

ToolStripItem

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

ToolStripItem , içine ToolStripgiden tüm öğelerin soyut temel sınıfıdır. Aşağıdaki nesne modeli devralma hiyerarşisini ToolStripItem gösterir.

Diagram that shows the ToolStripItem object model.

ToolStripItemsınıfları doğrudan öğesinden ToolStripItemdevralır veya dolaylı olarak ToolStripItem veya ToolStripDropDownItemüzerinden ToolStripControlHost devralır.

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

Aşağıdaki tabloda hisse senedi ToolStripItem denetimleri ve bunların en iyi göründüğü kapsayıcılar listelanmaktadır. Herhangi bir ToolStrip öğe türetilmiş herhangi bir ToolStripkapsayı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:

Dekont

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

Kapsanan öğe ToolStrip MenuStrip ContextMenuStrip StatusStrip 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

ToolStripButton , için ToolStripdüğ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. Varsayılan olarak odağın olması için de tanımlayabilirsiniz.

Toolstriplabel

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

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

LinkColoriçindeki bağlantı denetimini ToolStripdesteklemek için üzerindeki ToolStripLabel , LinkVisitedve LinkBehavior özelliklerini kullanın.

ToolStripStatusLabel

ToolStripStatusLabel, içinde StatusStripkullanılmak üzere özel olarak tasarlanmış bir sürümüdürToolStripLabel. Özel özellikler arasında BorderStyle, BorderSidesve Springbulunur.

Toolstripseparator

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

Tasarım zamanında, açılan listeden seçerek ekleyebilirsiniz ToolStripSeparator . Ancak, tasarımcı şablonu düğümünde veya Add yönteminde kısa çizgi (-) yazarak da otomatik olarak oluşturabilirsinizToolStripSeparator.

ToolStripControlHost

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

  • öğesinden Controltüretilen bir sınıf ile oluşturmaToolStripControlHost. Barındırılan denetime ve özelliklere tam olarak erişmek için özelliğini temsil ettiği gerçek sınıfa geri döndürmeniz Control gerekir.

  • öğesini genişletin ToolStripControlHostve devralınan sınıfın parametresiz oluşturucusunda, öğesinden Controltüretilen bir sınıf geçiren temel sınıf oluşturucuyu çağırın. Bu seçenek, içinde ToolStripkolay erişim için ortak denetim yöntemlerini ve özelliklerini sarmalamanıza olanak tanır.

Toolstripcombobox

ToolStripComboBoxComboBox, içinde barındırmak için iyileştirilmiştirToolStrip. Barındırılan denetimin özellikleri ve olaylarının bir alt kümesi düzeyinde kullanıma sunulur ToolStripComboBox , ancak temel alınan ComboBox denetime özelliği üzerinden ComboBox tam olarak erişilebilir.

ToolStripTextBox

ToolStripTextBoxTextBox, içinde barındırmak için iyileştirilmiştirToolStrip. Barındırılan denetimin özellikleri ve olaylarının bir alt kümesi düzeyinde kullanıma sunulur ToolStripTextBox , ancak temel alınan TextBox denetime özelliği üzerinden TextBox tam olarak erişilebilir.

ToolStripProgressBar

ToolStripProgressBarProgressBar, içinde barındırmak için iyileştirilmiştirToolStrip. Barındırılan denetimin özellikleri ve olaylarının bir alt kümesi düzeyinde kullanıma sunulur ToolStripProgressBar , ancak temel alınan ProgressBar denetime özelliği üzerinden ProgressBar tam olarak erişilebilir.

Toolstripdropdownıtem

ToolStripDropDownItem, ToolStripDropDownButtonve ToolStripSplitButtoniçin öğeleri doğrudan barındırabilen veya açılan kapsayıcıda ek öğeleri barındırabilen soyut temel sınıfıdırToolStripMenuItem. Bunu, özelliğini olarak ToolStripDropDown ve DropDown özelliğini ToolStripDropDownayarlayarak Items yaparsınız. Bu açılan öğelere doğrudan özelliği aracılığıyla erişin DropDownItems .

Toolstripmenuıtem

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

Toolstripdropdownbutton

ToolStripDropDownButton gibi ToolStripButtongörünür, ancak kullanıcı tıkladığında bir açılan alan gösterir. Özelliğini ayarlayarak ShowDropDownArrow açılan oku gizleyin veya gösterin. ToolStripDropDownButton , taşan öğeleri görüntüleyen bir ToolStripOverflowButton barındırıyor ToolStrip.

ToolStripSplitButton

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

DefaultItem Seçili açılan öğenin olayını düğmede gösterilen öğeyle eşitlemek Click için ö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 denetimler 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 ilgili. Bu özellikleri doğrudan ayarlayarak veya yalnızca ImageList çalışma zamanı özelliğini ayarlayarak denetimlerdeki ToolStrip görüntüleri kullanın.

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

Hizalama

özelliğinin Alignment değeri, öğenin görüntülendiği noktanın ToolStrip sonunu belirler. Alignment özelliği yalnızca öğesinin ToolStrip düzen stili yığın taşma değerlerinden birine ayarlandığında çalışır.

Öğeler, öğeleri Items koleksiyonunda göründüklerine göre sırasına göre yerleştirilir ToolStrip . Bir öğenin yerleştirildiği yeri program aracılığıyla değiştirmek için yöntemini kullanarak Insert öğeyi koleksiyonda taşıyın. Bu yöntem öğeyi taşır ancak yinelemez.

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

özelliği, TextImageRelation bir üzerindeki ToolStripItemmetne göre görüntünün göreli yerleşimini tanımlar. Resim, metin veya her ikisi de içermeyen öğeler, eksik öğe veya öğeler için boş bir nokta görüntülememesi için özel durumlar ToolStripItem 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 bkz.