C# WPF web浏览器UI元素刷新
在C#WPF中,我创建了一个自定义UI元素,看起来像一个窗口,这样我就可以在WPF应用程序中拥有一个迷你桌面环境。这个“WindowControl”类具有最大化、最小化、关闭、缩放、转换等功能 这个窗口UI包含一个画布,其他嵌入的UI元素都在画布上。例如,我可以将树视图嵌入WindowControl的画布中,并在屏幕上移动它,就像在操作系统中打开Windows资源管理器一样 除了网络浏览器,其他一切都正常工作。当我将内置的web浏览器控件放入WindowControl类的画布时,它不会刷新。我不是说刷新浏览器的url。我的意思是刷新UI元素本身。当我在屏幕上移动WindowControl类(带有嵌入式web浏览器)时,web浏览器会将屏幕工件到处留下 实际问题是:如何强制C#WPF中的内置web浏览器UI元素重新绘制自身,以便在调整大小/转换时不会留下瑕疵 我会包括我的代码。。。但是单是WindowControl类就有近1000行,这在这个论坛上是不愉快的 到目前为止,我已尝试了以下方法(均无效):C# WPF web浏览器UI元素刷新,c#,wpf,webbrowser-control,C#,Wpf,Webbrowser Control,在C#WPF中,我创建了一个自定义UI元素,看起来像一个窗口,这样我就可以在WPF应用程序中拥有一个迷你桌面环境。这个“WindowControl”类具有最大化、最小化、关闭、缩放、转换等功能 这个窗口UI包含一个画布,其他嵌入的UI元素都在画布上。例如,我可以将树视图嵌入WindowControl的画布中,并在屏幕上移动它,就像在操作系统中打开Windows资源管理器一样 除了网络浏览器,其他一切都正常工作。当我将内置的web浏览器控件放入WindowControl类的画布时,它不会刷新。我不
我会尝试强制更新(未测试):
WebBrowser.Document的HWND
UpdateWindow
:
对于WinForms: 错误无法转换…'“PInvoke.NativeMethods.IOleWindow”中的System.Windows.Forms.HtmlDocument” 解决方案
public IntPtr GetHandle()
{
HtmlDocument doc = Document;
if (doc == null || doc.DomDocument == null) return IntPtr.Zero;
IntPtr hwnd;
((NativeMethods.IOleWindow)(doc.DomDocument)).GetWindow(out hwnd);
return hwnd;
}
如果单独使用
UpdateWindow
没有帮助,你可以尝试在它前面加上invalidateBu立(hwnd,IntPtr.Zero,false)
@user2984377,你也可以尝试重画窗口(hwnd,IntPtr.Zero,IntPtr.Zero,RDW|ERASE | RDW| INTERNALPAINT | RDW| RDW|RDW| RDW|ERASENOW | RDW | RDW | RDW | UPDATENOW |所有孩子
)作为的彻底替代
+UpdateWindow
。看看什么样的标志组合能给你最好的结果。
IntPtr hwnd;
((IOleWindow)_webBrowser.Document).GetWindow(out hwnd);
UpdateWindow(hwnd);
public IntPtr GetHandle()
{
HtmlDocument doc = Document;
if (doc == null || doc.DomDocument == null) return IntPtr.Zero;
IntPtr hwnd;
((NativeMethods.IOleWindow)(doc.DomDocument)).GetWindow(out hwnd);
return hwnd;
}