Aracılığıyla paylaş


Yerleşik Sahip Çizimi Destekli Denetimler

Özel çizim olarak da bilinen Windows Forms'ta sahip çizimi, belirli denetimlerin görsel görünümünü değiştirmeye yönelik bir tekniktir.

Dekont

Bu konudaki "control" sözcüğü, veya Component'den Control türetilen sınıfları ifade etmek için kullanılır.

Genellikle Windows, denetimin görünümünü belirlemek için gibi BackColor özellik ayarlarını kullanarak boyamayı otomatik olarak işler. Sahip çizimi ile, özellikleri kullanarak kullanılamayan görünüm öğelerini değiştirerek boyama işlemini devralacaksınız. Örneğin, birçok denetim görüntülenen metnin rengini ayarlamanıza olanak sağlar, ancak tek bir renkle sınırlıdır. Sahip çizimi, metnin bir kısmını siyah ve bir kısmını kırmızı olarak görüntüleme gibi işlemler yapmanıza olanak tanır.

Uygulamada sahip çizimi, formdaki çizim grafiklerine benzer. Örneğin, bir denetimi öykünmek ListBox için formun Paint olayı için işleyicide grafik yöntemleri kullanabilirsiniz, ancak tüm kullanıcı etkileşimini işlemek için kendi kodunuzu yazmanız gerekir. Sahip çizimiyle denetim, içeriğini çizmek için kodunuzu kullanır, ancak aksi takdirde tüm iç özelliklerini korur. Grafik yöntemlerini kullanarak denetimdeki her öğeyi çizebilir veya her öğenin bazı yönlerini özelleştirirken, her öğenin diğer yönleri için varsayılan görünümü kullanabilirsiniz.

Windows Forms Denetimlerinde Sahip Çizimi

Bunu destekleyen denetimlerde sahip çizimi gerçekleştirmek için genellikle bir özellik ayarlar ve bir veya daha fazla olayı işlersiniz.

Sahip çizimini destekleyen denetimlerin çoğu, denetimin kendisini boyadığında çizimle ilgili olayını mı yoksa olaylarını mı oluşturacağını gösteren bir OwnerDraw veya DrawMode özelliğine sahiptir.

Veya DrawMode özelliği olmayan OwnerDraw denetimler, otomatik olarak gerçekleşen çizim olaylarını sağlayan denetimi ve ToolStrip çizimle ilgili kendi olayları olan bir dış işleme sınıfı kullanılarak çizilen denetimi içerirDataGridView.

Birçok farklı çizim olayı türü vardır, ancak bir denetim içinde tek bir öğe çizmek için tipik bir çizim olayı gerçekleşir. Olay işleyicisi, çizilmekte olan öğe ve onu çizmek için kullanabileceğiniz araçlar hakkında bilgi içeren bir EventArgs nesne alır. Örneğin, bu nesne genellikle öğenin dizin numarasını üst koleksiyonu içinde, öğenin görüntüleme sınırlarını gösteren bir Rectangle ve paint yöntemlerini çağırmak için bir Graphics nesne içerir. Bazı olaylar için nesne, EventArgs öğe ve yöntemler hakkında, varsayılan olarak öğenin arka plan veya odak dikdörtgeni gibi bazı yönlerini boyamak için çağırabileceğiniz ek bilgiler sağlar.

Sahip tarafından çizilmiş özelleştirmelerinizi içeren yeniden kullanılabilir bir denetim oluşturmak için, sahip çizimini destekleyen bir denetim sınıfından türetilen yeni bir sınıf oluşturun. Çizim olaylarını işlemek yerine, yeni sınıfta uygun OnEventName yöntemi veya yöntemleri için geçersiz kılmalara sahip çizim kodunuzu ekleyin. Denetiminizin kullanıcılarının sahip çizim olaylarını işleyebilmesi ve ek özelleştirme sağlayabilmesi için bu durumda temel sınıf OnEventName yöntemini veya yöntemlerini çağırdığınızdan emin olun.

Aşağıdaki Windows Forms denetimleri, .NET Framework'ün tüm sürümlerinde sahip çizimini destekler:

Aşağıdaki denetimler yalnızca .NET Framework 2.0'da sahip çizimini destekler:

Aşağıdaki denetimler sahip çizimini destekler ve .NET Framework 2.0'da yenidir:

Aşağıdaki bölümlerde bu denetimlerin her biri için ek ayrıntılar sağlanır.

ListBox ve ComboBox Denetimleri

ListBox ve ComboBox denetimleri, denetimdeki tek tek öğeleri tek bir boyutta veya farklı boyutlarda çizmenizi sağlar.

Dekont

Denetim denetimden ListBox türetilmiş olsa CheckedListBox da, sahip çizimini desteklemez.

Her öğeyi aynı boyutta çizmek için özelliğini OwnerDrawFixed olarak ayarlayın DrawMode ve olayı işleyebilirDrawItem.

Her öğeyi farklı bir boyut kullanarak çizmek için özelliğini olarak ayarlayın DrawMode ve hem hem DrawItem de olaylarını MeasureItem işleyebilir.OwnerDrawVariable Olay, MeasureItem bir öğe için olay gerçekleşmeden önce DrawItem öğenin boyutunu belirtmenize olanak tanır.

Kod örnekleri de dahil olmak üzere daha fazla bilgi için aşağıdaki konulara bakın:

Bileşen, MenuItem bir veya ContextMenu bileşenindeki tek bir MainMenu menü öğesini temsil eder.

Bir çizmek MenuItemiçin özelliğini olarak true ayarlayın OwnerDraw ve olayını işleyebilirDrawItem. Olay gerçekleşmeden önce DrawItem menü öğesinin boyutunu özelleştirmek için öğenin MeasureItem olayını işleyin.

Kod örnekleri de dahil olmak üzere daha fazla bilgi için aşağıdaki başvuru konularına bakın:

TabControl Denetimi

Denetim, TabControl denetimde tek tek sekmeler çizmenizi sağlar. Sahip çizimi yalnızca sekmeleri etkiler; TabPage içeriği etkilenmez.

içindeki TabControlher sekmeyi DrawMode çizmek için özelliğini olarak OwnerDrawFixed ayarlayın ve olayı işleyebilir DrawItem . Bu olay her sekme için yalnızca denetimde sekme görünür olduğunda bir kez gerçekleşir.

Kod örnekleri de dahil olmak üzere daha fazla bilgi için aşağıdaki başvuru konularına bakın:

ToolTip Bileşeni

Bileşen, ToolTip görüntülendiğinde ToolTip'in tamamını çizmenizi sağlar.

Bir çizmek ToolTipiçin özelliğini olarak true ayarlayın OwnerDraw ve olayını işleyebilirDraw. Olay gerçekleşmeden önce boyutunu ToolTip özelleştirmek için olayı işleyin Popup ve olay işleyicisinde özelliğini ayarlayınToolTipSize.Draw

Kod örnekleri de dahil olmak üzere daha fazla bilgi için aşağıdaki başvuru konularına bakın:

ListView Denetimi

Denetim, ListView denetimde tek tek öğeler, alt öğeler ve sütun üst bilgileri çizmenizi sağlar.

Denetimde sahip çizimini etkinleştirmek için özelliğini olarak trueayarlayınOwnerDraw.

Denetimdeki her öğeyi çizmek için olayı işleyebilirsiniz DrawItem .

Özelliği olarak ayarlandığında denetimdeki View her alt öğeyi veya sütun başlığını çizmek için Detailsve DrawColumnHeader olaylarını işleyebilirsinizDrawSubItem.

Kod örnekleri de dahil olmak üzere daha fazla bilgi için aşağıdaki başvuru konularına bakın:

TreeView Denetimi

Denetim, TreeView denetimde tek tek düğümler çizmenizi sağlar.

Yalnızca her düğümde görüntülenen metni çizmek için özelliğini OwnerDrawText olarak ayarlayın DrawMode ve olayı işleyip DrawNode metni çizin.

Her düğümün tüm öğelerini çizmek için özelliğini OwnerDrawAll olarak ayarlayın DrawMode ve olayı işleyerek DrawNode metin, simgeler, onay kutuları, artı ve eksi işaretleri ve düğümleri bağlayan çizgiler gibi ihtiyacınız olan öğeleri çizin.

Kod örnekleri de dahil olmak üzere daha fazla bilgi için aşağıdaki başvuru konularına bakın:

DataGridView Denetimi

Denetim, DataGridView denetimde tek tek hücreler ve satırlar çizmenizi sağlar.

Tek tek hücreler çizmek için olayı işleyebilir CellPainting .

Tek tek satırları veya satırların öğelerini çizmek için ve RowPostPaint olaylarından RowPrePaint birini veya her ikisini birden işleyebilir. Olay RowPrePaint , bir satırdaki hücreler boyanmadan önce gerçekleşir ve RowPostPaint hücreler boyandıktan sonra gerçekleşir. Satır arka planını, tek tek hücreleri ve CellPainting satır ön planını ayrı ayrı boyamak için hem olayları hem de olayı işleyebilir veya ihtiyacınız olan belirli özelleştirmeleri sağlayabilir ve satırın diğer öğeleri için varsayılan görüntüyü kullanabilirsiniz.

Kod örnekleri de dahil olmak üzere daha fazla bilgi için aşağıdaki konulara bakın:

ToolStrip Denetimi

ToolStrip ve türetilmiş denetimler, görünümlerinin herhangi bir yönünü özelleştirmenizi sağlar.

Denetimler için özel işleme sağlamak için ToolStrip , ToolStripManager, ToolStripPanelveya ToolStripContentPanel özelliğini ToolStripbir ToolStripRenderer nesne olarak ayarlayın Renderer ve sınıfı tarafından sağlanan birçok çizim olayının birini veya daha fazlasını işleyinToolStripRenderer. Alternatif olarak, bir özelliği , öğesinden türetilen veya ToolStripSystemRenderer belirli OnEventName yöntemlerini uygulayan veya geçersiz kılan kendi sınıfınızın bir örneğine ayarlayınRenderer.ToolStripRendererToolStripProfessionalRenderer

Kod örnekleri de dahil olmak üzere daha fazla bilgi için aşağıdaki konulara bakın:

Ayrıca bkz.