Yerleşik Sahip Çizimi Destekli Denetimler

özel çizim olarak da bilinen Windows Forms sahip çizimi, belirli denetimlerin görsel görünümünü değiştirmek için bir tekniktir.

Not

Bu konudaki "Control" sözcüğü ya da ' den türetilen sınıfların anlamı için kullanılır ControlComponent .

genellikle, BackColor bir denetimin görünüşünü belirleme gibi özellik ayarlarını kullanarak boyamayı otomatik olarak işler Windows. Sahip çizimi ile boyama işlemini gerçekleştirerek, özellikler kullanılarak kullanılamayan görünüm öğelerini değiştirmiş olursunuz. Örneğin, birçok denetim görüntülenen metnin rengini ayarlamanıza izin verir, ancak tek bir renkle sınırlı olursunuz. Sahip çizimi, metnin bir kısmını siyah ve kırmızı renkte görüntüleme gibi işlemleri yapmanızı sağlar.

Uygulamada, sahip çizimi, grafikleri bir biçimde çizmekle benzerdir. Örneğin, bir denetime öykünmek için formun olayına yönelik bir işleyicide grafik yöntemlerini kullanabilirsiniz PaintListBox , ancak tüm kullanıcı etkileşimini işlemek için kendi kodunuzu yazmanız gerekir. Sahip çizimi ile denetim, kendi içeriğini çizmek için kodunuzu kullanır, aksi halde tüm iç özelliklerini korur. Her bir öğenin diğer yönleri için varsayılan görünümü kullanırken, denetimdeki her öğeyi çizmek veya her öğenin bazı yönlerini özelleştirmek için grafik yöntemlerini kullanabilirsiniz.

Windows Forms denetimlerinde sahip çizimi

Kendisini destekleyen denetimlerde sahip çizimi gerçekleştirmek için, genellikle bir özellik ayarlarsınız ve bir veya daha fazla olayı idare edersiniz.

Sahip çizimi destekleyen çoğu OwnerDrawDrawMode Denetim, denetimin, kendisini boyayan çizimle ilgili olay veya olaylarını yapıp oluşturmayacağını belirten bir veya özelliğine sahiptir.

Veya özelliğine sahip olmayan denetimler, OwnerDrawDrawModeDataGridView otomatik olarak oluşan çizim olayları ve ToolStrip kendi çizimleriyle ilgili olaylara sahip bir dış işleme sınıfı kullanılarak çizilen denetim gibi bir denetimi içermez.

Birçok farklı çizim olayı türü vardır, ancak denetim içinde tek bir öğe çizmek için tipik bir çizim olayı oluşur. Olay işleyicisi, EventArgs çizmekte olan öğe ve araç çizmek için kullanabileceğiniz araçlar hakkında bilgi içeren bir nesnesi alır. Örneğin, bu nesne genellikle öğenin kendi üst koleksiyonundaki dizin numarasını, Rectangle öğenin görüntü sınırlarını ve Graphics Paint yöntemlerini çağırmak için bir nesneyi içerir. Bu nesne, bazı olaylar için, EventArgs arka plan veya odak dikdörtgeni gibi, varsayılan olarak öğenin bazı yönlerini boyamak için çağırabilmeniz gereken öğe ve yöntemler hakkında ek bilgiler sağlar.

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

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

aşağıdaki denetimler yalnızca .NET Framework 2,0 ' de sahip çizimi destekler:

aşağıdaki denetimler sahip çizimi destekler ve .NET Framework 2,0 ' de yenidir:

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

ListBox ve ComboBox denetimleri

ListBoxVe ComboBox denetimleri, tek bir boyutta ya da değişen boyutlarda denetimdeki tek tek öğeleri çizmenizi sağlar.

Not

CheckedListBoxDenetim denetimden türetilse de ListBox , sahip çizimi desteklemez.

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

Her bir öğeyi farklı bir boyut kullanarak çizmek için, DrawMode özelliğini OwnerDrawVariableMeasureItem ve olaylarını ve işlemek için öğesini olarak ayarlayın DrawItem . MeasureItemOlay, DrawItem Bu öğe için olay gerçekleşmeden önce bir öğenin boyutunu belirtmenize olanak sağlar.

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

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

Bir çizmek için MenuItem , OwnerDraw özelliğini olarak ayarlayın true ve DrawItem olayını işleyin. Olay gerçekleşmeden önce menü öğesinin boyutunu özelleştirmek için DrawItem , öğ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

TabControlDenetim, denetimde ayrı sekmeler çizmenizi sağlar. Sahip çizimi yalnızca sekmeleri etkiler; TabPage içerik etkilenmez.

İçindeki her bir sekmeyi çizmek için TabControl , DrawMode özelliğini olarak ayarlayın OwnerDrawFixed ve DrawItem olayı işleyin. Bu olay, her sekme için yalnızca sekme denetimde görünür olduğunda 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

ToolTipBileşeni, görüntülendiğinde araç ipucunun tamamını çizmenizi sağlar.

Bir çizmek için ToolTip , OwnerDraw özelliğini olarak ayarlayın true ve Draw olayını işleyin. Olay gerçekleşmeden önce öğesinin boyutunu özelleştirmek için ToolTipDraw olayı işleyin Popup ve ToolTipSize olay işleyicisindeki özelliği ayarlayın.

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

ListView Denetimi

ListViewDenetim, denetimdeki öğeleri, alt öğeleri ve sütun üstbilgilerini tek tek çizmenizi sağlar.

Denetimde sahip çizimi etkinleştirmek için OwnerDraw özelliğini olarak ayarlayın true .

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

Özelliği olarak ayarlandığında, denetimde her alt öğe veya sütun üstbilgisini çizmek için ViewDetailsDrawSubItem ve DrawColumnHeader olaylarını işleyin.

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

TreeView Denetimi

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

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

Her bir düğümün tüm öğelerini çizmek için, özelliği olarak ayarlayın DrawModeOwnerDrawAll ve istediğiniz öğeleri ( DrawNode metin, simgeler, onay kutuları, artı eksi işaretleri ve düğümleri bağlayan çizgiler) çizmek için olayı işleyin.

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

DataGridView Denetimi

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

Ayrı hücreler çizmek için CellPainting olayı işleyin.

Tek tek satırları veya satır öğelerini çizmek için ve olaylarını bir veya her ikisini de RowPrePaint işleyin RowPostPaint . RowPrePaintOlay, bir satırdaki hücreler boyanmadan önce oluşur ve bu RowPostPaint olay, hücreler boyandıktan sonra gerçekleşir. CellPaintingSatır arka planı, tek tek hücreler ve satır ön planını ayrı olarak boyamak için hem olayları hem de olayı işleyebilirsiniz veya ihtiyacınız olan özel özelleştirmeler sağlayabilir ve bu, satırın diğer öğeleri için varsayılan ekranı kullanır.

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üşlerinin herhangi bir yönünü özelleştirmenizi sağlar.

Denetimler için özel işleme sağlamak üzere, bir,, ToolStripRenderer veya özelliğini ToolStrip bir ToolStripManagerToolStripPanel nesnesine ayarlayın ToolStripContentPanelToolStripRenderer ve sınıfı tarafından sunulan birçok çizim olayını bir veya daha fazla işleyin ToolStripRenderer . Alternatif olarak, bir Renderer özelliği ToolStripRenderer , ToolStripProfessionalRenderer ya da belirli bir ToolStripSystemRendererOnRenderer yöntemini uygulayan veya geçersiz kılan kendi sınıfınızın bir örneğine ayarlayın.

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

Ayrıca bkz.