ToolStrip Denetim Mimarisi

ToolStripVe 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 hepsi System.Windows.Forms ad alanında bulunur ve genellikle "ToolStrip" önekiyle (gibi ToolStripOverflow ) veya "strip" soneki (gibi) ile adlandırılır MenuStrip .

ToolStrip

Aşağıdaki konularda ToolStrip ve öğesinden türetilen denetimler açıklanır.

ToolStrip ,, ve için soyut temel MenuStrip sınıftır StatusStripContextMenuStrip . Aşağıdaki nesne modelinde ToolStrip devralma hiyerarşisi gösterilmektedir.

Diagram that shows the ToolStrip object model.

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

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

MenuStrip , yerine geçen en üst düzey kapsayıcıdır MainMenu . Ayrıca, anahtar işleme ve birden çok belge arabirimi (MDI) özellikleri de sağlar. İşlev ToolStripDropDownItem görür ve ToolStripMenuItem ile birlikte çalışarak MenuStrip , öğesinden türetilseler de ToolStripItem .

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

StatusStrip

StatusStrip denetimin yerini alır StatusBar . StatusStripÖzel bir tablo düzeni, formun boyutlandırma ve taşıma griler için destek ve Spring bir, ToolStripStatusLabel kullanılabilir alanı otomatik olarak doldurmasına izin veren özelliği içerir.

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

ContextMenuStrip

ContextMenuStrip değiştirilir ContextMenu . Bir ContextMenuStrip denetimi herhangi bir denetimle ilişkilendirebilirsiniz ve sağ fare tıklaması bağlam menüsünü (veya kısayol menüsünü) otomatik olarak görüntüler. ContextMenuStripYöntemini kullanarak programlı bir şekilde gösterebilirsiniz Show . ContextMenuStripOpeningClosing dinamik popülasyon ve çoklu tıklama senaryolarını işlemek için iptal edilebilen ve olayları destekler. ContextMenuStrip görüntüleri, menü-öğe denetimi durumunu, metni, erişim anahtarlarını, kısayolları ve basamaklı menüleri destekler.

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

ToolStrip genel özellikleri

Aşağıdaki konularda, ve türetilmiş denetimlere genel olan özellikler ve davranışlar açıklanır ToolStrip .

Yar

Denetimlerde özel boyama yapabilirsiniz ToolStrip . diğer Windows Forms denetimlerinde olduğu gibi, ToolStrip ve ToolStripItem her ikisinde de geçersiz kılınabilir OnPaint yöntemler ve Paint olaylar vardır. Düzenli boyama yaparken, koordinat sistemi denetimin istemci alanına göre değişir; diğer bir deyişle, denetimin sol üst köşesi 0, 0 ' dır. Paintİçin olay ve OnPaint yöntemi ToolStripItem diğer denetim boyama olayları gibi davranır.

ToolStripDenetimler Ayrıca, ToolStripRenderer arka plan, öğe arka planı, öğe görüntüsü, öğe oku, öğe metni ve kenarlığını boyamak için geçersiz kılınabilir Yöntemler içeren sınıf aracılığıyla öğelerin ve kapsayıcının oluşturulmasına daha iyi erişim sağlar ToolStrip . Bu yöntemlerin olay bağımsız değişkenleri, istediğiniz şekilde ayarlayabileceğiniz dikdörtgenler, renkler ve metin biçimleri gibi çeşitli özellikleri kullanıma sunar.

Bir öğenin nasıl boyanacağını gösteren yalnızca birkaç yönü ayarlamak için, genellikle öğesini geçersiz kılabilirsiniz ToolStripRenderer .

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

Varsayılan olarak, ToolStrip iki kez tamponlanır ve OptimizedDoubleBuffer ayarından yararlanır.

Olma

kapsayıcı sahipliği ve üst öğe kavramı, ToolStrip diğer Windows Forms kapsayıcı denetimlerinden farklı denetimlerde daha karmaşıktır. Bu, taşma gibi dinamik senaryoları desteklemek, birden fazla öğe arasında açılan öğeleri paylaşmak ToolStrip ve bir denetimden oluşturmayı desteklemek için gereklidir ContextMenuStrip .

Aşağıdaki listede, üst öğe ile ilgili Üyeler açıklanmakta ve kullanımları açıklanmaktadır.

Devralınan denetimlerin davranışı

Aşağıdaki denetimler devralma sırasında her kullanıldığında kilitlenir:

örneğin, önceki listede bir veya daha fazla denetimden birini kullanarak yeni bir Windows Forms uygulaması oluşturun. Bir veya daha fazla denetimin erişim değiştiricisini veya olarak ayarlayın publicprotected ve ardından projeyi derleyin. İlk formdan devralan bir form ekleyin ve ardından devralınmış bir denetim seçin. Denetim kilitli, erişim değiştiricisi gibi davranan şekilde görünür private .

Devralma için ToolStripContainer desteği

ToolStripContainerDenetim, aşağıdaki örneğe benzer şekilde, sınırlı devralınmış senaryolar destekler:

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

  2. Forma bir ekleyin ToolStripContainer .

  3. İçin erişim değiştiricisini ToolStripContainer veya olarak ayarlayın publicprotected .

  4. ToolStrip' MenuStrip Nin bölgelerine, ve denetimlerinin herhangi ContextMenuStripToolStripPanel bir birleşimini ekleyin ToolStripContainer .

  5. Projeyi derleyin.

  6. İlk formdan devralan bir form ekleyin.

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

Alt denetimlerin devralınmış davranışı

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

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

  • ToolStripPanelDenetimler kilitlidir; içeriğini seçemezsiniz veya yeniden düzenleyemezsiniz.

  • ' A denetimler ekleyebilir ToolStripContentPanel , denetimleri taşıyabilir ve alt denetimleri yapabilirsiniz ToolStripContentPanel .

  • Form oluşturulduktan sonra değişiklikleriniz devam ettiritiliyor.

    Not

    Erişim değiştiricilerini ToolStripPanel bir parçası olan tüm denetimlerden kaldırın ToolStripContainer . ToolStripContainerDenetimin tamamını yöneten erişim değiştiricisi.

Kısmi Güven

ToolStripKısmi güven kapsamındaki s 'nin sınırlamaları, yetkisiz kişiler veya hizmetler tarafından kullanılabilen kişisel bilgilerin yanlışlıkla girişini engellemek için tasarlanmıştır. Koruyucu ölçüler aşağıdaki gibidir:

  • ToolStripDropDown denetimlerin AllWindows içindeki öğeleri görüntülemesi gerekir ToolStripControlHost . Bu,, ve gibi iç denetimlerin ToolStripTextBoxToolStripComboBoxToolStripProgressBar yanı sıra Kullanıcı tarafından oluşturulan denetimlere de uygulanır. Bu gereksinim karşılanmazsa, bu öğeler görüntülenmez. Özel durum oluşturulmaz.

  • AutoCloseÖzelliğinin olarak ayarlanmasına false izin verilmez ve iptal edilebilen Closing olay parametresi yok sayılır. Bu, açılan öğeyi yok etmeden birden fazla tuş vuruşu girmeyi olanaksız hale getirir. Bu gereksinim karşılanmazsa, bu tür öğeler görüntülenmez. Özel durum oluşturulmaz.

  • Çok sayıda tuş vuruşu işleme olayı, dışındaki kısmi güven bağlamlarında gerçekleştiklerinde oluşturulmaz AllWindows .

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

Kullanım

Aşağıdaki kullanım desenlerinde ToolStrip Düzen, klavye etkileşimi ve Son Kullanıcı davranışında bir pul vardır:

  • İçine katılmış ToolStripPanel

    , ToolStripToolStripPanel Ve genelinde yeniden konumlandırılabilir ToolStripPanel . DockÖzelliği yok sayılır ve Stretch özellik ise false öğesi öğesine eklendiğinde, ' nin boyutu ToolStrip artar ToolStripPanel . Genellikle, ToolStrip sekme sırasına katılmaz.

  • Abileceği

    , ToolStrip Sabit bir konumdaki kapsayıcının bir tarafına yerleştirilir ve boyutu yerleştirilmiş olan tüm kenarı üzerine genişletilir. Genellikle, ToolStrip sekme sırasına katılmaz.

  • Mutlak konumlandırılmış

    , ToolStrip Özelliği tarafından yerleştirilmesi, Location sabit bir boyuta sahip ve genellikle sekme sırasına katılıyorsa diğer denetimlere benzer.

Klavye etkileşimi

Erişim tuşları

ALT tuşu ile birlikte veya sonrasında, 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, harften önceki bir ampersan ( & ) karakteri kullanır. Örtük tanım, belirli bir özellikte bulunan karakterlerin sırasına göre eşleşen bir öğe bulmayı deneyen bir algoritma kullanır Text .

Kısayol Tuşları

Tarafından kullanılan kısayol tuşları, MenuStripKeys kısayol tuşunu tanımlamak için numaralandırmanın (sıra dışı olmayan) bir birleşimini kullanır. ShortcutKeyDisplayStringÖzelliğini, yalnızca metin içeren bir kısayol tuşu görüntülemek için, "Sil" yerine "Del" görüntülenmesi için de kullanabilirsiniz.

ALT tuşu MenuStrip tarafından işaret edilen tarafından etkinleştirilir MainMenuStrip . Buradan, CTRL + SEKME ToolStrip öğeleri içindeki denetimler arasında gezinir ToolStripPanel . Sayısal tuş takımındaki sekme tuşu ve ok tuşları, içindeki öğeler arasında gezinbir ToolStrip . Özel bir algoritma, taşma bölgesinde gezinmeyi işler. BOŞLUK çubuğu ToolStripButton , ToolStripDropDownButton veya seçer ToolStripSplitButton .

Odak ve doğrulama

ALT anahtar tarafından etkinleştirildiğinde, MenuStrip ya da genellikle odağa ToolStrip sahip olan denetimden odağı almaz veya kaldırır. İçinde veya açılan içinde barındırılan bir denetim varsa MenuStripMenuStrip , Kullanıcı Tab tuşuna bastığında denetim kazanır. Genel olarak,, GotFocus , LostFocusEnter ve Leave olayları MenuStrip klavye tarafından etkinleştirildiklerinde bu durum oluşmayabilir. Bu gibi durumlarda, MenuActivateMenuDeactivate yerine ve olaylarını kullanın.

Varsayılan olarak, CausesValidationfalse . ValidateDoğrulamayı gerçekleştirmek için formunuzu açık olarak çağırın.

Layout

ToolStripÖzelliği ile üyelerinden birini seçerek düzeni kontrol edersiniz ToolStripLayoutStyleLayoutStyle .

Yığın düzenleri

Yığınlama, öğesinin her iki ucunda de her birinin yanındaki öğelerin düzenlenmesi ToolStrip . Aşağıdaki listede yığın düzenleri açıklanmaktadır.

Yığın düzenlerinin diğer özellikleri

AlignmentToolStripöğenin hizalanma sonunu belirler.

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

Olayda, LayoutCompletedPlacement bir öğenin ana öğe ToolStrip , taşma ToolStrip veya şu anda hiç gösterilmediğine ait olup olmadığını anlamak için özelliği inceleyebilirsiniz. Bir öğenin görüntülenmesinin tipik nedenleri, öğenin Main ToolStrip 'e sığmıyor ve Overflow özelliği olarak ayarlanmış olması olabilir Never .

Taşınabilir yapın ToolStrip ve ' a ayarlayarak taşınabilir hale getirin ToolStripPanelGripStyleVisible .

Diğer düzen seçenekleri

Diğer düzen seçenekleri Flow ve ' dir Table .

Flow düzeni

Flow ,, ve için varsayılan ContextMenuStrip Düzen ToolStripDropDownMenuToolStripOverflow . Öğesine benzerdir FlowLayoutPanel . Düzenin özellikleri şunlardır Flow :

Tablo düzeni

Table Düzen varsayılandır StatusStrip . Buna benzerdir TableLayoutPanel . Düzenin özellikleri şunlardır Flow :

ToolStripItem

Aşağıdaki konularda ToolStripItem ve öğesinden türetilen denetimler açıklanır.

ToolStripItem , ' a gidecek tüm öğelerin soyut temel sınıfıdır ToolStrip . Aşağıdaki nesne modelinde ToolStripItem devralma hiyerarşisi gösterilmektedir.

Diagram that shows the ToolStripItem object model.

ToolStripItem sınıflar doğrudan öğesinden devralınır ToolStripItem veya üzerinden dolaylı olarak devralınır ToolStripItemToolStripControlHostToolStripDropDownItem .

ToolStripItem denetimler,,, veya içinde yer almalıdır ToolStripMenuStripStatusStripContextMenuStrip ve doğrudan bir forma eklenemez. Çeşitli kapsayıcı sınıfları, denetimlerin uygun bir alt kümesini içerecek şekilde tasarlanmıştır ToolStripItem .

Aşağıdaki tabloda, hisse senedi ToolStripItem denetimleri ve en iyi şekilde göründükleri kapsayıcılar listelenmektedir. Herhangi bir ToolStrip öğe herhangi bir türetilmiş kapsayıcıda barındırılabilecek olsa da ToolStrip , bu öğeler aşağıdaki kapsayıcılarda en iyi şekilde görünecek şekilde tasarlanmıştır:

Not

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

İçerilen öğe ToolStrip MenuStrip ContextMenuStrip StatusStrip ToolStripDropDown
ToolStripButton Yes Hayır Hayır Hayır Yes
ToolStripComboBox Yes Yes Yes Hayır Yes
ToolStripSplitButton Yes Hayır Hayır Yes Yes
ToolStripLabel Yes Hayır Hayır Yes Yes
ToolStripSeparator Yes Yes Yes Hayır Yes
ToolStripDropDownButton Yes Hayır Hayır Yes Yes
ToolStripTextBox Yes Yes Yes Hayır Yes
ToolStripMenuItem Hayır Yes Yes Hayır Hayır
ToolStripStatusLabel Hayır Hayır Hayır Yes Hayır
ToolStripProgressBar Yes Hayır Hayır Yes Hayır
ToolStripControlHost Yes Yes Hayır Yes Yes

ToolStripButton

ToolStripButton , için düğme öğesidir ToolStrip . Bunu çeşitli kenarlık stilleriyle görüntüleyebilirsiniz ve bunu, işletimsel durumları temsil etmek ve etkinleştirmek için kullanabilirsiniz. Ayrıca, odağı varsayılan olarak odağa sahip olacak şekilde tanımlayabilirsiniz.

ToolStripLabel

, ToolStripLabel Denetimlerde etiket işlevselliği sağlar ToolStrip . , ToolStripLabelToolStripButton Varsayılan olarak odağı almaz ve gönderildi veya vurgulanmış olarak işlenmiyor.

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

Bir LinkColorLinkVisitedLinkBehaviorToolStripLabel içinde bağlantı denetimini desteklemek için bir üzerinde, ve özelliklerini kullanın ToolStrip .

ToolStripStatusLabel

ToolStripStatusLabel , ToolStripLabel içinde kullanılmak üzere özel olarak tasarlanan bir sürümdür StatusStrip . Özel özellikler,, BorderStyleBorderSides ve içerir Spring .

ToolStripSeparator

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

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

ToolStripControlHost

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

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

  • ToolStripControlHostÖğesini genişletin ve devralınmış sınıfın parametresiz oluşturucusunda, öğesinden türetilen bir sınıf geçirerek taban sınıf oluşturucusunu çağırın Control . Bu seçenek, ' de kolay erişim için ortak denetim yöntemlerini ve özelliklerini kaydırabilmenizi sağlar ToolStrip .

ToolStripComboBox

ToolStripComboBox , ComboBox içinde barındırmak için en iyi duruma getirilmiştir ToolStrip . Barındırılan denetimin özellikler ve olaylarının bir alt kümesi ToolStripComboBox , düzeyinde gösterilir, ancak temel ComboBox denetime özelliği aracılığıyla tam olarak erişilebilir ComboBox .

ToolStripTextBox

ToolStripTextBox , TextBox içinde barındırmak için en iyi duruma getirilmiştir ToolStrip . Barındırılan denetimin özellikler ve olaylarının bir alt kümesi ToolStripTextBox , düzeyinde gösterilir, ancak temel TextBox denetime özelliği aracılığıyla tam olarak erişilebilir TextBox .

ToolStripProgressBar

ToolStripProgressBar , ProgressBar içinde barındırmak için en iyi duruma getirilmiştir ToolStrip . Barındırılan denetimin özellikler ve olaylarının bir alt kümesi ToolStripProgressBar , düzeyinde gösterilir, ancak temel ProgressBar denetime özelliği aracılığıyla tam olarak erişilebilir ProgressBar .

ToolStripDropDownItem

ToolStripDropDownItem ,, ve için, ToolStripMenuItemToolStripDropDownButtonToolStripSplitButton öğeleri doğrudan veya bir açılan kapsayıcıda ek öğeleri barındırabilen, ve için soyut temel sınıftır. Bunu DropDown , özelliğini olarak ayarlayarak ToolStripDropDown ve özelliğini ayarlayarak yapabilirsiniz ItemsToolStripDropDown . Bu açılan öğelere doğrudan özelliği aracılığıyla erişin DropDownItems .

ToolStripMenuItem

ToolStripMenuItem , ToolStripDropDownItemToolStripDropDownMenu ve ContextMenuStrip menüleri için özel vurgulama, düzen ve sütun düzenlemesini işlemek üzere ve ile birlikte çalışarak.

ToolStripDropDownButton

ToolStripDropDownButton gibi görünür ToolStripButton , ancak Kullanıcı buna tıkladığında bir açılan alan gösterir. Özelliği ayarlayarak açılan oku gizleyin veya gösterin ShowDropDownArrow . ToolStripDropDownButton üzerinde ToolStripOverflowButton taşan öğeleri görüntüleyen a ana bilgisayarları ToolStrip .

ToolStripSplitButton

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

DefaultItemClick Seçili açılan öğenin olayını düğme üzerinde gösterilen öğeyle eşleştirmek için özelliğini kullanın.

ToolStripItem genel özellikleri

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

  • Çekirdek olaylar

  • Görüntü işleme

  • Hizalama

  • Metin ve resim ilişkisi

  • Görüntüleme stili

Çekirdek olaylar

ToolStripItem denetimler kendi tıklama, fare ve boyama olaylarını alır ve ayrıca bazı klavye önişlemleri gerçekleştirebilir.

Görüntü Işleme

Image,, ImageAlign , ImageIndexImageKey Ve ImageScaling özellikleri görüntü işlemenin çeşitli yönlerini sağlar. ToolStripBu özellikleri doğrudan ayarlayarak veya çalışma zamanı – yalnızca özelliğini ayarlayarak denetimlerde görüntüleri kullanın ImageList .

Görüntü ölçekleme, ToolStrip aşağıdaki gibi, ve özelliklerinin her ikisi de ile etkileşime göre belirlenir ToolStripItem :

Hizalama

Özelliğin değeri, AlignmentToolStrip bir öğenin göründüğü sonunu belirler. AlignmentÖzelliği yalnızca öğesinin düzen stili ToolStrip yığın taşması değerlerinden birine ayarlandığında işe yarar.

Öğeler, öğeler ToolStrip koleksiyonunda öğelerin göründüğü sırayla yerleştirilir. Bir öğenin düzenlendiği yeri programlı bir şekilde değiştirmek için, yöntemini kullanarak Insert öğeyi koleksiyondaki öğeyi taşıyın. Bu yöntem öğeyi taşımıyor ancak yinelemez.

Metin ve resim Ilişkisi

TextImageRelationÖzelliği, resmin içindeki metne göre göreli yerleşimini tanımlar ToolStripItem . Bir görüntü, metin veya her ikisi de olmayan öğeler özel durumlar olarak değerlendirilir, böylece ToolStripItem eksik öğe veya öğeler için boş bir nokta görüntülenmez.

Görüntüleme stili

DisplayStyle yalnızca istediğiniz şeyi görüntülerken bir öğenin metin ve resim özelliklerinin değerlerini ayarlamanıza olanak sağlar. Bu genellikle, farklı bir bağlamda aynı öğeyi gösterirken yalnızca görüntüleme stilini değiştirmek için kullanılır.

Donatı sınıfları

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

Ayrıca bkz.