我有一個用於託管WebBrowser控件的WinForm。我想根據瀏覽器加載的文檔大小動態調整窗體大小。Winform在設置Size屬性時不會調整大小
我可以從WebBrowser控件內成功讀取文檔大小,並基於此設置表單大小,但表單根本不會調整大小。
容量調整是化網頁瀏覽器DocumentCompleted事件中:
private void ViewWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
ViewWebBrowser.Height = ViewWebBrowser.Document.Window.Size.Height;
ViewWebBrowser.Width = ViewWebBrowser.Document.Window.Size.Width;
Size = new Size(ViewWebBrowser.Width, ViewWebBrowser.Height);
}
此事件就好了,果然和他們是正確基於我加載的頁面上檢測到的文檔加載和文件尺寸,但Size從事件處理程序中始終是37x38。下面是在一個斷點調試器的截圖:
我也試圖將像素點,但是這有同樣的結果。大小仍然是37x38。
private void ViewWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
Graphics g = this.CreateGraphics();
g.PageUnit = GraphicsUnit.Pixel;
ViewWebBrowser.Height = Convert.ToInt32(ViewWebBrowser.Document.Window.Size.Height * 72/g.DpiY);
ViewWebBrowser.Width = Convert.ToInt32(ViewWebBrowser.Document.Window.Size.Width * 72/g.DpiX);
Size = new Size(ViewWebBrowser.Width, ViewWebBrowser.Height);
}
WebBrowser控件加載窗體的Activated
事件中的文件:
private void WebBrowserView_Activated(object sender, EventArgs e)
{
ViewWebBrowser.Navigate(URL);
}
URL
是一個公共字符串屬性由主持人設定。演示者不會在表單上設置任何大小的屬性。
AutoSize
在窗體上設置爲false。我從默認設置中更改的唯一屬性是Text
和FormBorderStyle
,它設置爲SizableToolWindow
。
除了新的Size
結構之外,我還嘗試單獨設置Height
和Width
屬性,結果相同。
MinimumSize
和MaximumSize
都設置爲0,0。將MinimumSize
設置爲1,1不會改變任何內容。
DockStyle
在WebBrowser控件設置爲Fill
,所以我只在表單上設置了Size
。
爲什麼表單不接受新尺寸?
編輯:
這裏是滿級的形式爲:
public partial class WebBrowserView : Form, IWebBrowserView
{
public WebBrowserView()
{
InitializeComponent();
}
public string URL { private get; set; }
private void WebBrowserView_Activated(object sender, EventArgs e)
{
ViewWebBrowser.Navigate(URL);
}
private void ViewWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var newHeight = ViewWebBrowser.Document.Window.Size.Height;
var newWidth = ViewWebBrowser.Document.Window.Size.Width;
ViewWebBrowser.Height = newHeight;
ViewWebBrowser.Width = newWidth;
this.Size = new Size(ViewWebBrowser.Width, ViewWebBrowser.Height);
}
private void WebBrowserView_FormClosing(object sender, FormClosingEventArgs e)
{
ViewWebBrowser.Dispose();
}
}
愚蠢的問題,但您可以設置'this.Size'而不僅僅是'Size'並確認它仍然失敗。 – johnjps111
如果你不能增加'Size',那可能是由於某處改變了它或者由於MaxSize造成的。 – Sinatr
首先,你試圖將窗口大小設置爲'[37 38]',這是非常小的(考慮到當前的分辨率),並且可以通過'MinimumSize'屬性來「屏蔽」。嘗試首先將'MinimumSize'更改爲'[1 1]',然後再次嘗試設置大小。 –