WinForms WebBrowser控件打开FTP文件夹跳转资源管理器问题求助
WinForms WebBrowser控件FTP文件夹内部跳转解决方案
解决这个问题的核心是拦截WebBrowser默认的FTP文件夹跳转行为,手动接管导航逻辑,具体步骤如下:
- 给WebBrowser控件绑定
Navigating事件,该事件会在导航操作触发前执行,可用于拦截默认行为 - 在事件处理方法中判断目标URL是否为FTP路径,若是则取消默认跳转,手动在控件内加载目标路径
代码实现
- 绑定事件(可在窗体构造函数或Load事件中添加):
webBrowser1.Navigating += WebBrowser1_Navigating;
- 实现事件处理逻辑:
private void WebBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { // 仅处理FTP协议的导航请求 if (e.Url.Scheme.Equals("ftp", StringComparison.OrdinalIgnoreCase)) { var currentFtpPath = webBrowser1.Url?.AbsolutePath ?? string.Empty; // 当目标路径与当前显示路径不同时(双击文件夹的场景) if (!e.Url.AbsolutePath.Equals(currentFtpPath, StringComparison.OrdinalIgnoreCase)) { // 取消默认跳转(阻止打开资源管理器) e.Cancel = true; // 手动在WebBrowser内部加载目标FTP文件夹 webBrowser1.Navigate(e.Url.ToString()); } } }
额外提示
可将WebBrowser控件的AllowWebBrowserDrop属性设置为false,避免拖拽操作引发意外的外部跳转。
内容的提问来源于stack exchange,提问作者CodingDude
相关产品推荐
相关产品推荐

