private static Image GetImage(WebBrowser wbmail, string imgname, string src, string alt)
{
HtmlDocument doc = (HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc.Body;///就这里出现了错误
IHTMLControlRange range = (IHTMLControlRange)body.createControlRange();
IHTMLControlElement img;
if (imgname == "")
{
int imgnum = getpicindex(wbmail, src, alt);
if (imgnum == -1) return null;
img = (IHTMLControlElement)wbmail.Document.Images[imgnum].DomElement;
}
else
img = (IHTMLControlElement)wbmail.Document.All[imgname].DomElement;
range.add(img);
range.execCommand("Copy", false, null);
Image regimg = Clipboard.GetImage();
Clipboard.Clear();
return regimg;
}
private static int getpicindex(WebBrowser wbmail, string src, string alt)
{
int imgnum = -1;
for (int i = 0; i < wbmail.Document.Images.Count; i++)
{
IHTMLImgElement img = (IHTMLImgElement)wbmail.Document.Images[i].DomElement;
if (alt == "")
{
if (img.src.Contains(src)) return i;
}
else
{
if (!string.IsNullOrEmpty(img.alt))
{
if (img.alt.Contains(alt)) return i;
}
}
}
return imgnum;
}
}
}
错误 1 无法将类型“System.Windows.Forms.HtmlElement”转换为“mshtml.HTMLBody” D:\我的文档\Visual Studio 2008\Projects\WindowsFormsApplication12\WindowsFormsApplication12\Form1.cs 49 29 WindowsFormsApplication12
12 个解决方案
#1
类型转换错误,你想实现什么效果?
doc.Body是System.Windows.Forms.HtmlElement,不能转成mshtml.HTMLBody
doc.Body是System.Windows.Forms.HtmlElement,不能转成mshtml.HTMLBody
#2
是小写的b..
是doc.body
可是直接运行例子没有出错...
这里我改成小写的也提示错误了..
是doc.body
可是直接运行例子没有出错...
这里我改成小写的也提示错误了..
#3
看上面这图片 .下面那个是原例.我两个放一起编译.就只提示我的红框内的语句错误.
#4
#5
命名空间冲突了,正确如下:
mshtml.HtmlDocument doc = ( mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc. body;///就这里出现了错误
mshtml.HtmlDocument doc = ( mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc. body;///就这里出现了错误
#6
using System.Windows.Forms
和
using mshtml;
冲突
去掉前一个,否则就在具体使用的地方加上 mshtml
可以看出,你程序中冲突了不少
和
using mshtml;
冲突
去掉前一个,否则就在具体使用的地方加上 mshtml
可以看出,你程序中冲突了不少
#7
可是.怎么下面的那个就没有出错咧.我放在同一个app里编译的.而且按你的改了后.出现新错误.
错误
命名空间“mshtml”中不存在类型或命名空间名称“HtmlDocument”(是缺少程序集引用吗?)
#8
mshtml贴 慢慢多起来了 ~~ 顶
#9
你还要在项目中添加引用Microsoft.mshtml.dll
信不信随你
#10
在vs2008中出现了另人不爽的问题,在vs2005中不会出现。
就是你如果没有添加dll引用,那么你using了明明空间在2008下竟然不报错,在2005下直接就报错了。这你必须注意了。我对此也很无奈
就是你如果没有添加dll引用,那么你using了明明空间在2008下竟然不报错,在2005下直接就报错了。这你必须注意了。我对此也很无奈
#11
是我没有大写...你也和我一样粗心了...
H tmldocument和H TMLdocument
#12
5楼强人,厉害,谢谢指教
#1
类型转换错误,你想实现什么效果?
doc.Body是System.Windows.Forms.HtmlElement,不能转成mshtml.HTMLBody
doc.Body是System.Windows.Forms.HtmlElement,不能转成mshtml.HTMLBody
#2
是小写的b..
是doc.body
可是直接运行例子没有出错...
这里我改成小写的也提示错误了..
是doc.body
可是直接运行例子没有出错...
这里我改成小写的也提示错误了..
#3
看上面这图片 .下面那个是原例.我两个放一起编译.就只提示我的红框内的语句错误.
#4
#5
命名空间冲突了,正确如下:
mshtml.HtmlDocument doc = ( mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc. body;///就这里出现了错误
mshtml.HtmlDocument doc = ( mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc. body;///就这里出现了错误
#6
using System.Windows.Forms
和
using mshtml;
冲突
去掉前一个,否则就在具体使用的地方加上 mshtml
可以看出,你程序中冲突了不少
和
using mshtml;
冲突
去掉前一个,否则就在具体使用的地方加上 mshtml
可以看出,你程序中冲突了不少
#7
可是.怎么下面的那个就没有出错咧.我放在同一个app里编译的.而且按你的改了后.出现新错误.
错误
命名空间“mshtml”中不存在类型或命名空间名称“HtmlDocument”(是缺少程序集引用吗?)
#8
mshtml贴 慢慢多起来了 ~~ 顶
#9
你还要在项目中添加引用Microsoft.mshtml.dll
信不信随你
#10
在vs2008中出现了另人不爽的问题,在vs2005中不会出现。
就是你如果没有添加dll引用,那么你using了明明空间在2008下竟然不报错,在2005下直接就报错了。这你必须注意了。我对此也很无奈
就是你如果没有添加dll引用,那么你using了明明空间在2008下竟然不报错,在2005下直接就报错了。这你必须注意了。我对此也很无奈
#11
是我没有大写...你也和我一样粗心了...
H tmldocument和H TMLdocument
#12
5楼强人,厉害,谢谢指教