2009-12-10 23 views

cevap

8

Bir Panel içinde WebBrowser denetimi kaydırmak ve Panel.BorderStyle ayarlayabilirsiniz özelliği.

Panel panel1 = new Panel(); 
panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 
panel1.Controls.Add(webbrowser1); 
+0

Bu bir yoldur :) Ancak, tüm denetimlerin web tarayıcısı dışında bir kenarlık stili var mı? – Pygmy

+3

Web tarayıcısı özel :-) – Kugel

+0

Bu, kenarlık stili özelliği olmayan herhangi bir denetim hakkında gitmek için yoldur. RichTextBoxes ve ComboBoxes üzerinde bile kullandım. – Isuru

13

Gumpy yorumları, doğru değil. Projenize yeni bir sınıf ekleyin ve aşağıda gösterilen kodu yapıştırın. Derleyin. Yeni kontrolü araç çubuğunuzun üstünden formunuza bırakın.

using System; 
using System.Windows.Forms; 

class MyWebBrowser : WebBrowser { 
    protected override CreateParams CreateParams { 
    get { 
     var parms = base.CreateParams; 
     parms.Style |= 0x800000; // Turn on WS_BORDER 
     return parms; 
    } 
    } 
} 

Diğer kenarlık stilleri de çalışıyor, SDK'da WinUser.h dosyasına bakın. ! Her şeyden

+0

İyi cevap. Birisi benim gibi pencereleri yeniyse, WinUser.h'm buradaydı (muhtemelen görsel stüdyo oraya koydu): C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Include \ –

1

Önce

< DOCTYPE html belirtirseniz IE 6 tek başına sınırı boyar unutmayın > veya

body {border-style: gömme; Çerçeve genişliği: 2px; marjı: 0px;

Ancak bu, artık yeni IE sürümleriyle çalışmaz. Eğer C# sınır boya ve bir DOCTYPE belirtirseniz

Yani

html ayarlamalısınız, vücut {border: 0; }

aksi IE 6.


Hans çözeltisi, iki kenar çizgilerine sahip (WS_BORDER ayarlamak için), bir kaba siyah sınır oluşturur. Eğer bir batık 3D sınır istiyorsanız

kolay çözüm şudur:

protected override CreateParams CreateParams 
{ 
    get 
    { 
     CreateParams i_Parms = base.CreateParams; 
     i_Parms.ExStyle |= 0x200; // WS_EX_CLIENTEDGE 
     return i_Parms; 
    } 
} 

sorun batık 3D sınır, Windows 2000 yılına kadar kullanıldı Fakat işler XP UxTheme ile değişmiş olmasıdır. DLL, daha sonra eski güzel USER32.DLL yerine tüm denetimleri boyar. User.h'deki tüm kontrol resim bayrakları Windows 2000'e kadar kullanıldı ve XP'den bu yana Tema uyumlu boyama üretmiyorlar.

Peki ListBox, ListView TreeView vb (ince bir mavi veya yeşil hat) XP/Windows 7 Teması sınır gibi görünüyor ve siz temayı değiştirmek renk değiştiren bir sınır alınır?

protected override void OnLoad(EventArgs e) 
{ 
    .... 
    listBox.IntegralHeight = false; 
    webBrowser.Parent = listBox; 
    webBrowser.Dock = DockStyle.Fill; 
} 

Bu tarayıcı bir çocuk olmak yapar:

kolay bir çözüm tarayıcı görünür ve ardından Formunda yazmak istediğiniz yerde VS Form Designer, bir liste kutusu eklemek için liste kutusu. Liste kutusu kendi sınırını çiziyor ve içerideki tarayıcı Html içeriğini boyar.

Bu, kusursuz çalışır ve diğer temalı kontrollerle aynı şekilde görünür, ancak biraz dezavantaj, formun daha fazla titremesinin yeniden boyutlandırılmasıdır.

Mükemmel çözüm, DrawThemeBackground veya DrawThemeEdge öğelerini el ile sınırlamak veya GetThemeColor ile kenarlık rengini elde etmek ve System.Drawing.Graphics.DrawRectangle() ile sınırı çizmek için mükemmel bir çözümdür. Denemelisin. (Ek olarak, kullanıcı temaları kapattıysa bir geri dönüş gerçekleştirmeniz gerekir)

İlgili konular