2008-09-15 15 views
0

Sekmeli sayfalarınız için .NET'teki standart sekme denetimini kullanırsanız ve görünümü değiştirmeye çalıştığınızda birazcık hissederseniz, sekme sayfalarının arka rengini değiştirebilir ancak sekme denetimi için kullanamazsınız. Mülkiyet kullanılabilir, bunu ayarlayabilirsiniz ama hiçbir etkisi yoktur. Sayfaların arka rengini değiştirirseniz ve sekme kontrolünü değiştirmezseniz ... çok çirkin görünüyor.Neden BackColor .NET'te TabControls için çalışmıyor?

Microsoft'un ayarlanmasını istemediğini biliyorum. MSDN: ' Bu özellik, .NET Framework altyapısını destekler ve doğrudan kodunuzdan kullanılması amaçlanmaz. Bu üye bu kontrol için anlamlı değil. 'NET altyapısını destekleyen renk için bir kontrol özelliği mi? ...inanması zor.

Yıllar boyunca Microsoft'un değiştireceğini umdum ama yapmadılar. Bunu düzeltmek için boya yöntemini geçersiz kılan kendi TabControl sınıfımı oluşturdum. Ama bu gerçekten en iyi çözüm mü?

Bu denetim için BackColor'u desteklememenin nedeni nedir? Bunu düzeltmek için çözümünüz nedir? Boya yöntemini geçersiz kılmaktan daha iyi bir çözüm var mı?

+0

MS'in bir şey yaptığını sormak biraz cevapsızdır. Sorunu yeniden yazmalısın. – GEOCHET

cevap

1

arka plan rengi OS'nin Görüntü Özellikleri ile kontrol gibi görünüyor. Özellikle, görünüm sekmesinin altında Windows ve düğmelerin özelliği (Windows XP). Windows Klasik stiline ayarlandığında, sekme hiç renk değiştirmez. Windows XP stiline ayarlandığında, en azından seçildiğinde griden beyaza dönüşür. Bu yüzden arka plan rengini kontrol edememek bir özelliktir!

2

Rajesh'in blogundaki çözüm gerçekten yararlıdır, ancak yalnızca kontrolün sekme bölümünü renklendirir. Benim durumumda farklı bir renkli arka plan üzerinde bir tabcontrol vardı. Sekmelerin kendileri bir sorun olmayan griydi, ancak sekmelerin sağındaki alan gri bir şerit olarak görüntüleniyordu.

Bu rengi arka planınızın rengine değiştirmek için, aşağıdaki kodu DrawItem yöntemine eklemeniz gerekir (Rajesh'in çözümünde açıklandığı gibi). Ben VB.Net kullanıyorum:

... 

Dim r As Rectangle = tabControl1.GetTabRect(tabControl1.TabPages.Count-1) 
Dim rf As RectangleF = New RectangleF(r.X + r.Width, r.Y - 5, tabControl1.Width - (r.X + r.Width), r.Height + 5) 
Dim b As Brush = New SolidBrush(Color.White) 
e.Graphics.FillRectangle(b, rf) 

... 

Temelde sekme denetiminin sağ tarafına son sekmenin sağ tarafında yapılmış dikdörtgen almak ve sonra istediğiniz renkle doldurmak gerekir.

0

Teşekkürler, LauraM. Beni doğru yolda bulmana yardım ettin. Oskar'ın sağladığı bağlantıyı çoktan bulmuştum ama sonunda şerit için hiçbir şey yapmadı.

Sonunda, biraz değişmem gerekiyordu çünkü formda bir arka plan görüntüsü gerekti, ya da ebeveyn arka plan görüntüsü olmayan bir arka plandaysa, arka plan renginde. Ayrıca mevcut olup olmadığını göstermek için simgelere ihtiyacım vardı. TabControl BackColor fix post'umdaki tüm kodlarla tam bir yazışmam var.

+1

Bu blog yayınını sakladığınız için çok teşekkürler. Oh bekle, hayır yapmadın. –