|
|
28.1 How can I host a WebBrowser control in a Windows Form?
|
 |
We have two suggestions with sample projects how you host a WebBrowser control inside a form and display HTML contents and listen to events such as NavigateComplete or BeforeNavigate. Of course there are many other ways to do this.
Download htmlviewer.zip for two sample projects for the suggestions discussed below.
1) The first suggestion is to generate an ActiveX wrapper for shdocvw using the aximp tool.
The command line for this tool should be as follows:
|
aximp c:\windows\system32\shdocvw.dll
|
This will generate the following assemblies.
|
Generated Assembly: D:\Syncfusion\faq\HtmlBrowser\HtmlViewer2\SHDocVw.dll
|
Generated Assembly: D:\Syncfusion\faq\HtmlBrowser\HtmlViewer2\AxSHDocVw.dll
|
Now you can reference these dlls in your project and use AxWebBrowser. In the attached HtmlViewer2 sample we have derived a HtmlControl class from AxWebBrowser and added some properties that let you specify a CSS Stylesheet and the Html content as a string.
2) Our second sample lets you bypass the generation of a ActiveX wrapper. You don't have to include and ship shdocvw.dll and axshdocvw.dll. In the attached HtmlViewer sample, we derived from AxHost and attached our own IWebBrowserEvents interface by overriding the CreateSink, AttachInterfaces and DetachSink methods.
You can use HtmlControl in your form and specify HTML content by assigning a HTML string to HtmlControl. A cascading style sheet can be specified by assigning a path name to the CascadingStyleSheet property. The sample demonstrates how to use a CSS style sheet that has been embedded as a resource in the assembly.
|
28.2 How can I enable editing for the WebBrowser?
|
 |
You can set the content editable by getting a reference to a IHTMLElement3 element and initializing the contentEditable property with "true".
|
private void EnableEditing()
|
IHTMLDocument3 doc = (IHTMLDocument3) browser.GetDocument();
|
IHTMLElement3 el = (IHTMLElement3) doc.GetBody();
|
el.contentEditable = "true";
|
If you want to read out contents of a specific element use an id in the html source:
|
<span id="EditText">EditableText</span>
|
From CSharp you can reference this text with
|
IHTMLElement3 el = (IHTMLElement3) doc.getElementById("EditText");
|
MessageBox.Show(el.GetInnerText());
|
MessageBox.Show(el.GetInnerHTML());
|
You can use IHTMLDocument3 and IHTMLElement3 interface definitions from the imported type library dll C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll
|
Guid(@"3050F485-98B5-11CF-BB82-00AA00BDCE0B"),
|
TypeLibType(TypeLibTypeFlags.FDispatchable|TypeLibTypeFlags.FDual)
|
public interface IHTMLDocument3 : IHTMLDocument2
|
[DispId(1072 /*0x0430*/)]
|
[DispId(1073 /*0x0431*/)]
|
void recalc(bool fForce);
|
[DispId(1074 /*0x0432*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object createTextNode(string text);
|
[DispId(1075 /*0x0433*/)]
|
IHTMLElement documentElement
|
[return: MarshalAs(UnmanagedType.Interface)] get; }
|
[DispId(1077 /*0x0435*/)]
|
[return: MarshalAs(UnmanagedType.BStr)] get; }
|
[DispId(-2147417605 /*0x800101FB*/)]
|
bool attachEvent(string _event, object pdisp);
|
[DispId(-2147417604 /*0x800101FC*/)]
|
void detachEvent(string _event, object pdisp);
|
[DispId(-2147412050 /*0x800117AE*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412049 /*0x800117AF*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412048 /*0x800117B0*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412072 /*0x80011798*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412071 /*0x80011799*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412070 /*0x8001179A*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412065 /*0x8001179F*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412995 /*0x800113FD*/)]
|
set; [return: MarshalAs(UnmanagedType.BStr)] get; }
|
[DispId(-2147412047 /*0x800117B1*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412044 /*0x800117B4*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(1076 /*0x0434*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
IHTMLDocument2 createDocumentFragment();
|
[DispId(1078 /*0x0436*/)]
|
IHTMLDocument2 parentDocument
|
[return: MarshalAs(UnmanagedType.Interface)] get; }
|
[DispId(1079 /*0x0437*/)]
|
[DispId(1080 /*0x0438*/)]
|
set; [return: MarshalAs(UnmanagedType.BStr)] get; }
|
[DispId(-2147417063 /*0x80010419*/)]
|
[return: MarshalAs(UnmanagedType.IDispatch)] get; }
|
[DispId(1082 /*0x043A*/)]
|
[DispId(-2147412043 /*0x800117B5*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(1086 /*0x043E*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object getElementsByName(string v);
|
[DispId(1088 /*0x0440*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
IHTMLElement getElementById(string v);
|
[DispId(1087 /*0x043F*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object getElementsByTagName(string v);
|
InterfaceType(ComInterfaceType.InterfaceIsDual),
|
Guid(@"332C4425-26CB-11D0-B483-00C04FD90119")
|
public interface IHTMLDocument2
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object GetActiveElement();
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
void SetDesignMode(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
void SetAlinkColor(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetBgColor(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetFgColor(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetLinkColor(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetVlinkColor(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
string GetLastModified();
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void SetDomain(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void SetCookie(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.Bool)]
|
void SetCharset(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void SetDefaultCharset(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
string GetDefaultCharset();
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
string GetFileCreatedDate();
|
[return: MarshalAs(UnmanagedType.BStr)]
|
string GetFileModifiedDate();
|
[return: MarshalAs(UnmanagedType.BStr)]
|
string GetFileUpdatedDate();
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void DummyWrite(int psarray);
|
void DummyWriteln(int psarray);
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object Open(string URL, object name, object features, object replace);
|
[return: MarshalAs(UnmanagedType.Bool)]
|
bool QueryCommandSupported(string cmdID);
|
[return: MarshalAs(UnmanagedType.Bool)]
|
bool QueryCommandEnabled(string cmdID);
|
[return: MarshalAs(UnmanagedType.Bool)]
|
bool QueryCommandState(string cmdID);
|
[return: MarshalAs(UnmanagedType.Bool)]
|
bool QueryCommandIndeterm(string cmdID);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
string QueryCommandText(string cmdID);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object QueryCommandValue(string cmdID);
|
[return: MarshalAs(UnmanagedType.Bool)]
|
bool ExecCommand(string cmdID, bool showUI, object value);
|
[return: MarshalAs(UnmanagedType.Bool)]
|
bool ExecCommandShowHelp(string cmdID);
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object CreateElement(string eTag);
|
void SetOnhelp(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnclick(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOndblclick(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnkeyup(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnkeydown(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnkeypress(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmouseup(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmousedown(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmousemove(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmouseout(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmouseover(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnreadystatechange(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnreadystatechange();
|
void SetOnafterupdate(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnafterupdate();
|
void SetOnrowexit(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnrowenter(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOndragstart(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnselectstart(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnselectstart();
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object ElementFromPoint(int x, int y);
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object GetParentWindow();
|
[return: MarshalAs(UnmanagedType.Interface)]
|
void SetOnbeforeupdate(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnbeforeupdate();
|
void SetOnerrorupdate(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnerrorupdate();
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object CreateStyleSheet(string bstrHref, int lIndex);
|
Guid(@"3050F434-98B5-11CF-BB82-00AA00BDCE0B"),
|
TypeLibType(TypeLibTypeFlags.FDispatchable|TypeLibTypeFlags.FDual)
|
public interface IHTMLElement2 : IHTMLElement
|
[DispId(-2147417073 /*0x8001040F*/)]
|
[return: MarshalAs(UnmanagedType.BStr)] get; }
|
[DispId(-2147417072 /*0x80010410*/)]
|
void setCapture(bool containerCapture);
|
[DispId(-2147417071 /*0x80010411*/)]
|
[DispId(-2147412066 /*0x8001179E*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147417070 /*0x80010412*/)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
string componentFromPoint(int x, int y);
|
[DispId(-2147417069 /*0x80010413*/)]
|
void doScroll(object component);
|
[DispId(-2147412081 /*0x8001178F*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412063 /*0x800117A1*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412062 /*0x800117A2*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412061 /*0x800117A3*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412060 /*0x800117A4*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412059 /*0x800117A5*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412058 /*0x800117A6*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412054 /*0x800117AA*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412057 /*0x800117A7*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412053 /*0x800117AB*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412056 /*0x800117A8*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412052 /*0x800117AC*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412055 /*0x800117A9*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147417105 /*0x800103EF*/)]
|
[return: MarshalAs(UnmanagedType.Interface)] get; }
|
[DispId(-2147412065 /*0x8001179F*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147417068 /*0x80010414*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[DispId(-2147417067 /*0x80010415*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object getBoundingClientRect();
|
[DispId(-2147417608 /*0x800101F8*/)]
|
void setExpression(string propname, string expression, string language);
|
[DispId(-2147417607 /*0x800101F9*/)]
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object getExpression(string propname);
|
[DispId(-2147417606 /*0x800101FA*/)]
|
bool removeExpression(string propname);
|
[DispId(-2147418097 /*0x8001000F*/)]
|
[DispId(-2147416112 /*0x800107D0*/)]
|
[DispId(-2147416107 /*0x800107D5*/)]
|
set; [return: MarshalAs(UnmanagedType.BStr)] get; }
|
[DispId(-2147412097 /*0x8001177F*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412098 /*0x8001177E*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412076 /*0x80011794*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147416110 /*0x800107D2*/)]
|
[DispId(-2147416095 /*0x800107E1*/)]
|
void addFilter(object pUnk);
|
[DispId(-2147416094 /*0x800107E2*/)]
|
void removeFilter(object pUnk);
|
[DispId(-2147416093 /*0x800107E3*/)]
|
[DispId(-2147416092 /*0x800107E4*/)]
|
[DispId(-2147416091 /*0x800107E5*/)]
|
[DispId(-2147416090 /*0x800107E6*/)]
|
[DispId(-2147417605 /*0x800101FB*/)]
|
bool attachEvent(string _event, object pdisp);
|
[DispId(-2147417604 /*0x800101FC*/)]
|
void detachEvent(string _event, object pdisp);
|
[DispId(-2147412996 /*0x800113FC*/)]
|
[return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412087 /*0x80011789*/)]
|
object onreadystatechange
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412050 /*0x800117AE*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412049 /*0x800117AF*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412048 /*0x800117B0*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412995 /*0x800113FD*/)]
|
set; [return: MarshalAs(UnmanagedType.BStr)] get; }
|
[DispId(-2147417056 /*0x80010420*/)]
|
[return: MarshalAs(UnmanagedType.IDispatch)]
|
object createControlRange();
|
[DispId(-2147417055 /*0x80010421*/)]
|
[DispId(-2147417054 /*0x80010422*/)]
|
[DispId(-2147417053 /*0x80010423*/)]
|
[DispId(-2147417052 /*0x80010424*/)]
|
[DispId(-2147417050 /*0x80010426*/)]
|
[DispId(-2147417049 /*0x80010427*/)]
|
void mergeAttributes(IHTMLElement mergeThis);
|
[DispId(-2147412047 /*0x800117B1*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147417043 /*0x8001042D*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
IHTMLElement insertAdjacentElement(string where, IHTMLElement insertedElement);
|
[DispId(-2147417047 /*0x80010429*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
IHTMLElement applyElement(IHTMLElement apply, string where);
|
[DispId(-2147417042 /*0x8001042E*/)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
string getAdjacentText(string where);
|
[DispId(-2147417041 /*0x8001042F*/)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
string replaceAdjacentText(string where, string newText);
|
[DispId(-2147417040 /*0x80010430*/)]
|
[DispId(-2147417032 /*0x80010438*/)]
|
int addBehavior(string bstrUrl, ref object pvarFactory);
|
[DispId(-2147417031 /*0x80010439*/)]
|
bool removeBehavior(int cookie);
|
[DispId(-2147417048 /*0x80010428*/)]
|
[return: MarshalAs(UnmanagedType.Interface)] get; }
|
[DispId(-2147417030 /*0x8001043A*/)]
|
[return: MarshalAs(UnmanagedType.IDispatch)] get; }
|
[DispId(-2147417029 /*0x8001043B*/)]
|
set; [return: MarshalAs(UnmanagedType.BStr)] get; }
|
[DispId(-2147412043 /*0x800117B5*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147417028 /*0x8001043C*/)]
|
[DispId(-2147417027 /*0x8001043D*/)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
object getElementsByTagName(string v);
|
} // end of class mshtml.IHTMLElement2
|
TypeLibType(TypeLibTypeFlags.FDispatchable|TypeLibTypeFlags.FDual),
|
Guid(@"3050F673-98B5-11CF-BB82-00AA00BDCE0B")
|
public interface IHTMLElement3 : IHTMLElement2
|
[DispId(-2147417016 /*0x80010448*/)]
|
void mergeAttributes(IHTMLElement mergeThis, ref object pvarFlags);
|
[DispId(-2147417015 /*0x80010449*/)]
|
[DispId(-2147417014 /*0x8001044A*/)]
|
[DispId(-2147412039 /*0x800117B9*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412038 /*0x800117BA*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147417012 /*0x8001044C*/)]
|
[DispId(-2147412035 /*0x800117BD*/)]
|
object onbeforedeactivate
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147417011 /*0x8001044D*/)]
|
[DispId(-2147412950 /*0x8001142A*/)]
|
set; [return: MarshalAs(UnmanagedType.BStr)] get; }
|
[DispId(-2147417010 /*0x8001044E*/)]
|
[DispId(-2147412949 /*0x8001142B*/)]
|
[DispId(-2147418036 /*0x8001004C*/)]
|
[DispId(-2147417007 /*0x80010451*/)]
|
[DispId(-2147412034 /*0x800117BE*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412033 /*0x800117BF*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147417006 /*0x80010452*/)]
|
bool FireEvent(string bstrEventName, ref object pvarEventObject);
|
[DispId(-2147412029 /*0x800117C3*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412028 /*0x800117C4*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412031 /*0x800117C1*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412030 /*0x800117C2*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412027 /*0x800117C5*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412026 /*0x800117C6*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412025 /*0x800117C7*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147412024 /*0x800117C8*/)]
|
set; [return: MarshalAs(UnmanagedType.Struct)] get; }
|
[DispId(-2147417005 /*0x80010453*/)]
|
[DispId(-2147417004 /*0x80010454*/)]
|
} // end of class mshtml.IHTMLElement3
|
Guid(@"3050F1FF-98B5-11CF-BB82-00AA00BDCE0B"),
|
InterfaceType(ComInterfaceType.InterfaceIsDual)
|
public interface IHTMLElement
|
void SetAttribute(string strAttributeName, object AttributeValue, int lFlags);
|
void GetAttribute(string strAttributeName, int lFlags, object[] pvars);
|
[return: MarshalAs(UnmanagedType.Bool)]
|
bool RemoveAttribute(string strAttributeName, int lFlags);
|
void SetClassName(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
IHTMLElement GetParentElement();
|
[return: MarshalAs(UnmanagedType.Interface)]
|
void SetOnhelp(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnclick(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOndblclick(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnkeydown(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnkeyup(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnkeypress(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmouseout(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmouseover(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmousemove(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmousedown(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnmouseup(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void SetLanguage(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void SetOnselectstart(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnselectstart();
|
void ScrollIntoView(object varargStart);
|
[return: MarshalAs(UnmanagedType.Bool)]
|
bool Contains(IHTMLElement pChild);
|
[return: MarshalAs(UnmanagedType.I4)]
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetRecordNumber();
|
[return: MarshalAs(UnmanagedType.BStr)]
|
[return: MarshalAs(UnmanagedType.I4)]
|
[return: MarshalAs(UnmanagedType.I4)]
|
[return: MarshalAs(UnmanagedType.I4)]
|
[return: MarshalAs(UnmanagedType.I4)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
IHTMLElement GetOffsetParent();
|
void SetInnerHTML(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void SetInnerText(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void SetOuterHTML(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void SetOuterText(string p);
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void InsertAdjacentHTML(string where, string html);
|
void InsertAdjacentText(string where, string text);
|
[return: MarshalAs(UnmanagedType.Interface)]
|
IHTMLElement GetParentTextEdit();
|
[return: MarshalAs(UnmanagedType.Bool)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
void SetOndragstart(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
[return: MarshalAs(UnmanagedType.BStr)]
|
void SetOnbeforeupdate(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnbeforeupdate();
|
void SetOnafterupdate(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnafterupdate();
|
void SetOnerrorupdate(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnerrorupdate();
|
void SetOnrowexit(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOnrowenter(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
void SetOndatasetchanged(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOndatasetchanged();
|
void SetOndataavailable(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOndataavailable();
|
void SetOndatasetcomplete(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOndatasetcomplete();
|
void SetOnfilterchange(object p);
|
[return: MarshalAs(UnmanagedType.Struct)]
|
object GetOnfilterchange();
|
[return: MarshalAs(UnmanagedType.Interface)]
|
[return: MarshalAs(UnmanagedType.Interface)]
|
28.3 How can I catch the BeforeNavigate2 event?
|
 |
This is a known bug. See http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q311298&ID=KB;EN-US;
If you are using the second solution from our FAQ "How can I host a WebBrowser control in a Windows Form" you will not have this problem but if you use the automatically generated wrapper classes see the following solution:
John Cullen posted the following answer in the microsoft.public.dotnet.framework.interop newsgroup.
The problem of the BeforeNavigate2 event not firing in C# applications has been floating around various groups for several months. Microsoft have not yet fixed the problem, although it is documented in the knowledge base. Until they do provide a fix, I suggest the following workaround to the problem which uses the fact the the old Webbrowser_V1 BeforeNavigate event *can* be caught. Note, use of this interface is deprecated, however since there doesn't appear to be any chance of a fix any time soon...
|
// define the webbrowser object
|
private AxSHDocVw.AxWebBrowser axDocument;
|
// define an IE3 compatible webbrowser object.
|
private SHDocVw.WebBrowser_V1 axDocumentV1;
|
axDocument.Navigate("about:blank", ref o, ref o, ref o, ref o);
|
object oOcx = axDocument.GetOcx();
|
axDocumentV1 = oOcx as WebBrowser_V1;
|
axDocumentV1.BeforeNavigate += new SHDocVw.DWebBrowserEvents_BeforeNavigateEventHandler(this.axDocumentV1_BeforeNavigate);
|
// ignore errors. If it doesn't work, there's not a lot to do!
|
Console.WriteLine("Add BeforeNavigate event handler failed with{0}.", ex.Message);
|
private void axDocumentV1_BeforeNavigate(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
|
Console.WriteLine("BeforeNavigateURL= {0}", URL);
|
//false= allow navigate to continue.
|
//true= cancel navigation.
|
28.4 WebBrowser control does not seem to be cleaning up temp files. How can this be done?
|
 |
28.5 How can I use MSHTML to edit HTML in a Windows Forms control?
|
 |
Take a look at Tim Anderson's HTMLEditor control which is a wrapper for MSHTML. |
|
|
|
|