关于mshtml的使用.帮忙看下代码错在哪

时间:2022-08-19 10:36:10

 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

#2


是小写的b..
是doc.body
可是直接运行例子没有出错...
这里我改成小写的也提示错误了..

#3


关于mshtml的使用.帮忙看下代码错在哪
看上面这图片 .下面那个是原例.我两个放一起编译.就只提示我的红框内的语句错误.

#4


关于mshtml的使用.帮忙看下代码错在哪

#5


命名空间冲突了,正确如下:

mshtml.HtmlDocument doc = ( mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc. body;///就这里出现了错误

#6


using System.Windows.Forms

using mshtml;
冲突


去掉前一个,否则就在具体使用的地方加上 mshtml

可以看出,你程序中冲突了不少

#7


引用 5 楼 mngzilin 的回复:
命名空间冲突了,正确如下:

mshtml.HtmlDocument doc = (mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc.body;///就这里出现了错误


可是.怎么下面的那个就没有出错咧.我放在同一个app里编译的.而且按你的改了后.出现新错误.
错误
命名空间“mshtml”中不存在类型或命名空间名称“HtmlDocument”(是缺少程序集引用吗?)

#8


mshtml贴 慢慢多起来了 ~~ 顶

#9


引用 7 楼 monkeyxox 的回复:
引用 5 楼 mngzilin 的回复:
命名空间冲突了,正确如下:

mshtml.HtmlDocument doc = (mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc.body;///就这里出现了错误


可是.怎么下面的那个就没有出错咧.我放在同一个app里编译的.而……


你还要在项目中添加引用Microsoft.mshtml.dll

信不信随你

#10


在vs2008中出现了另人不爽的问题,在vs2005中不会出现。
就是你如果没有添加dll引用,那么你using了明明空间在2008下竟然不报错,在2005下直接就报错了。这你必须注意了。我对此也很无奈

#11


引用 5 楼 mngzilin 的回复:
命名空间冲突了,正确如下:

mshtml.HtmlDocument doc = (mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc.body;///就这里出现了错误



是我没有大写...你也和我一样粗心了...
H tmldocument和H TMLdocument

#12


5楼强人,厉害,谢谢指教

#1


类型转换错误,你想实现什么效果?
doc.Body是System.Windows.Forms.HtmlElement,不能转成mshtml.HTMLBody

#2


是小写的b..
是doc.body
可是直接运行例子没有出错...
这里我改成小写的也提示错误了..

#3


关于mshtml的使用.帮忙看下代码错在哪
看上面这图片 .下面那个是原例.我两个放一起编译.就只提示我的红框内的语句错误.

#4


关于mshtml的使用.帮忙看下代码错在哪

#5


命名空间冲突了,正确如下:

mshtml.HtmlDocument doc = ( mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc. body;///就这里出现了错误

#6


using System.Windows.Forms

using mshtml;
冲突


去掉前一个,否则就在具体使用的地方加上 mshtml

可以看出,你程序中冲突了不少

#7


引用 5 楼 mngzilin 的回复:
命名空间冲突了,正确如下:

mshtml.HtmlDocument doc = (mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc.body;///就这里出现了错误


可是.怎么下面的那个就没有出错咧.我放在同一个app里编译的.而且按你的改了后.出现新错误.
错误
命名空间“mshtml”中不存在类型或命名空间名称“HtmlDocument”(是缺少程序集引用吗?)

#8


mshtml贴 慢慢多起来了 ~~ 顶

#9


引用 7 楼 monkeyxox 的回复:
引用 5 楼 mngzilin 的回复:
命名空间冲突了,正确如下:

mshtml.HtmlDocument doc = (mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc.body;///就这里出现了错误


可是.怎么下面的那个就没有出错咧.我放在同一个app里编译的.而……


你还要在项目中添加引用Microsoft.mshtml.dll

信不信随你

#10


在vs2008中出现了另人不爽的问题,在vs2005中不会出现。
就是你如果没有添加dll引用,那么你using了明明空间在2008下竟然不报错,在2005下直接就报错了。这你必须注意了。我对此也很无奈

#11


引用 5 楼 mngzilin 的回复:
命名空间冲突了,正确如下:

mshtml.HtmlDocument doc = (mshtml.HtmlDocument)wbmail.Document.DomDocument;
HTMLBody body = (HTMLBody)doc.body;///就这里出现了错误



是我没有大写...你也和我一样粗心了...
H tmldocument和H TMLdocument

#12


5楼强人,厉害,谢谢指教