2010-01-24 8 views
6

Tôi có một điều khiển WebBrowser đang ngồi trên một Biểu mẫu có đường viền trông có kích thước 2px khó chịu xung quanh nó. Nó khiến nội dung của tôi bị cắt bớt 4 px ở bên phải và phía dưới, và tôi không thể tìm ra cách để loại bỏ nó. Bản thân điều khiển không có bất kỳ thuộc tính BorderStyle nào - làm cách nào để loại bỏ đường viền?Xóa đường viền khỏi điều khiển WebBrowser

Xem khu vực màu đỏ trong ảnh chụp màn hình:

Make it stop! http://img229.imageshack.us/img229/8342/badbadwebbrowser.gif

Tôi muốn các WebBrowser để trông giống như khu vực màu xanh - đó là, để điền vào Form và được tuôn ra chống lại các cạnh của Form.

Trả lời

4

IE vẽ nó như một phần của kiểu mặc định trên thẻ body. Đặt border:0px trên phần tử cơ thể và nó biến mất.

Rất may, đây là going away in IE9.

+0

Cuộc gọi tốt. Tôi đã đặt lại lề và đệm, nhưng không loại bỏ bất kỳ đường viền nào có thể nằm trên phần tử html hoặc phần thân. Cảm ơn! –

+0

Tôi không thể giải quyết nó bằng css. –

+0

Bạn không thể thêm CSS vào trang hay là phương pháp dựa trên CSS không hoạt động?Bạn có thể lập trình thêm CSS để thực hiện điều này từ ứng dụng của bạn. –

-1

Tôi không thể tạo lại giao diện bạn đang nói. Mã của tôi trong Form1.designer.cs là:

this.webBrowser1.Location = new System.Drawing.Point(0, 0); 
    this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20); 
    this.webBrowser1.Name = "webBrowser1"; 
    this.webBrowser1.ScrollBarsEnabled = false; 
    this.webBrowser1.Size = new System.Drawing.Size(141, 125); 
    this.webBrowser1.TabIndex = 0; 
    this.webBrowser1.Uri = .... 

và webcontrol được hiển thị mà không biên giới ... Tôi đang sử dụng VS 2008 SP1/Windows 7.

Có lẽ bạn nên cố gắng thêm kiểm soát bên trong một thùng chứa, ví dụ tấm bảng.

+1

Xem biểu mẫu của bạn trên xp và bạn sẽ thấy chính xác như trong câu hỏi. Win7 không hiển thị biên giới. –

+0

@ Hasan: Nó không liên quan gì đến phiên bản Windows. Nó phụ thuộc vào phiên bản trình duyệt! – Elmue

1

Điều khiển trình duyệt Web kế thừa kiểu hiển thị từ lớp điều khiển. Nếu bạn muốn kiểm soát kiểu kiểm soát đường viền, bạn có thể sử dụng mã như vậy, ví dụ: trong Form.Designer.cs:


    using System; 
    using System.ComponentModel; 
    using System.Windows.Forms; 

    public class wbExt : System.Windows.Forms.WebBrowser 
    { 
     private BorderStyle _borderStyle; 
     [ 
     Category("Appearance"), 
     Description("The border style") 
     ] 

     public BorderStyle BorderStyle 
     { 
      get 
      { 
       return _borderStyle; 
      } 
      set 
      { 
       _borderStyle = value; 
       this.RecreateHandle(); 
       Invalidate(); 
      } 
     } 

     protected override CreateParams CreateParams 
     { 
      get 
      { 
       const int WS_BORDER = 0x00800000; 
       const int WS_EX_STATICEDGE = 0x00020000; 
       CreateParams cp = base.CreateParams; 
       switch (_borderStyle) 
       { 
        case BorderStyle.FixedSingle: 
         cp.Style |= WS_BORDER; 
         break; 
        case BorderStyle.Fixed3D: 
         cp.ExStyle |= WS_EX_STATICEDGE; 
         break; 
       } 
       return cp; 
      } 
     } 

     public wbExt() 
     { 
     } 
    } 

Bây giờ bạn có thể thay đổi mã được tạo trong lớp Biểu mẫu.

private wbExt webBrowser1;

và viết lại tạo ra các mục WebBrowser trong InitializeComponent của hình thức, như thế:

this.webBrowser1 = new WindowsFormsApplication1.wbExt();
Vì vậy, bây giờ
webBrowser1.BorderStyle = BorderStyle.None;
sẽ loại bỏ bất kỳ biên giới khỏi sự kiểm soát WebBrowser.

+0

Cảm ơn bạn đã lấy mẫu mã. Khi nó quay ra, vấn đề thực sự của tôi là với tài liệu tôi đang tải vào kiểm soát, và không phải là bản thân kiểm soát. –

+0

Câu trả lời này hoàn toàn sai. Biên giới mà chúng ta đang nói ở đây là INSIDE kiểm soát trình duyệt KHÔNG ở bên ngoài. – Elmue

3

Tôi đã giải quyết vấn đề tương tự bằng cách thêm thuộc tính phong cách border:none; vào thành phần html.

<html style="border:none;"> 

Trước tiên tôi cố gắng thêm nó vào yếu tố cơ thể nhưng nó đã không làm việc, nhưng nó hoạt động trên gốc html phần tử.

Phiên bản IE được sử dụng trên Windows XP cho đối tượng WebBrowser - Tôi nghĩ phiên bản 6 - diễn giải phần tử html gốc có đường viền theo mặc định. Nếu bạn có quyền kiểm soát trực tiếp trang web được hiển thị trong WebBrowser, bạn có thể thêm thuộc tính kiểu trực tiếp vào nguồn HTML của trang - như tôi đã làm, Nếu không, sẽ có cách để chỉnh sửa HTML bên trong Trình duyệt Web theo chương trình ở bên ứng dụng của bạn.

+0

Điều này không hoạt động trên IE 9. Cách duy nhất để xóa đường viền ngu xuẩn đó là xóa Elmue