WebBrowser控件HTML嵌入资源图片的IFRAME Base64语法问题
问题解答
1. 字符串前$符号的作用
$是VB 14及以上版本(对应Visual Studio 2015及更高版本)支持的插值字符串语法,作用是简化字符串拼接逻辑,可以直接在字符串内用{变量名}的格式插入变量值,属于非必需语法,旧版本VB环境用常规的&拼接即可。
2. iframe展示Base64图片的标准语法
和Base64格式PDF的加载逻辑完全一致,仅需要将MIME类型替换为对应图片格式即可,你使用的是BMP图片,src的标准格式为:data:image/bmp;base64,{imgBase64变量的值}
你原有代码的核心问题是直接把imgBase64变量名写死到了字符串里,没有实际插入变量存储的Base64内容。
3. 修复后的代码示例
方式1:不使用插值语法,兼容所有VB版本
Dim str1 as String = "" str1 += "<table class=""mycssclass"" Align=center>" str1 += "<caption><b>My Caption</b></caption>" ' 核心修改:正确拼接Base64图片地址,注意VB中双引号用两个双引号转义 str1 += "<tr><td><iframe width=""100%"" height=""100%"" src=""data:image/bmp;base64," & imgBase64 & """></iframe></td></tr>" str1 += "</table>" WebBrowser1.DocumentText = str1 WebBrowser1.Refresh()
方式2:使用$插值语法,代码更简洁
Dim str1 as String = "" str1 += "<table class=""mycssclass"" Align=center>" str1 += "<caption><b>My Caption</b></caption>" str1 += $"<tr><td><iframe width=""100%"" height=""100%"" src=""data:image/bmp;base64,{imgBase64}""></iframe></td></tr>" str1 += "</table>" WebBrowser1.DocumentText = str1 WebBrowser1.Refresh()
可选优化
如果仅需要展示图片,不需要iframe的隔离特性,可以直接用<img>标签实现,性能更轻量,对应写法为:
' 非插值写法 str1 += "<tr><td><img src=""data:image/bmp;base64," & imgBase64 & """></td></tr>" ' 插值写法 str1 += $"<tr><td><img src=""data:image/bmp;base64,{imgBase64}""></td></tr>"
内容的提问来源于stack exchange,提问作者user16594857
相关产品推荐
相关产品推荐

