Exposing methods of controls in collection

Y

Yuk Tang

I've satisfactorily got an axwebbrowser control on a form within a
panel, suitably positioned and sized, and now I want to display a
webpage on it. This is not normally a problem when I have the
control as a uniquely named object, since I would just use the
axweb.Navigate or Navigate2 method to send it to the right page.
However, it's part of a controls collection, accessible only via its
place in the collection.


[Form3, the form with the web browser]

Public Sub LoadWebBrowser()
If WebBrowserExists = False Then
Dim ax As New AxSHDocVw.AxWebBrowser
ax.Dock = DockStyle.Fill
Me.Controls.Add(ax)
WebBrowserExists = True
WebBrowserIndex = Me.Controls.Count - 1
End If
End Sub


As you can see, Form3.Controls(WebBrowserIndex) is the webbrowser
control. Now how do I set the page on the control? Using
ax.Navigate within this procedure gives me the following error

'An unhandled exception of type 'InvalidActiveXStateException'
occurred in systems.windows.forms.dll'

and is not ideal in any case, since I'm not sure if the object ax
will continue to exist outside this procedure. But trying to access
the method via

Me.Controls(WebBrowserIndex).Navigate

doesn't work at all, as Navigate is not a member of
System.Windows.Forms.Control, despite being a member of _that
particular_ control.

Incidentally, if anyone can get Form3 to locate and size
appropriately with an axwebbrowser control inside at designtime then
this will save me a lot of headaches. But I reckon I'll probably
want to access methods of controls in collections sooner or later, so
I'll still be grateful for help in this.
 
C

Chris

Yuk said:
I've satisfactorily got an axwebbrowser control on a form within a
panel, suitably positioned and sized, and now I want to display a
webpage on it. This is not normally a problem when I have the
control as a uniquely named object, since I would just use the
axweb.Navigate or Navigate2 method to send it to the right page.
However, it's part of a controls collection, accessible only via its
place in the collection.


[Form3, the form with the web browser]

Public Sub LoadWebBrowser()
If WebBrowserExists = False Then
Dim ax As New AxSHDocVw.AxWebBrowser
ax.Dock = DockStyle.Fill
Me.Controls.Add(ax)
WebBrowserExists = True
WebBrowserIndex = Me.Controls.Count - 1
End If
End Sub


As you can see, Form3.Controls(WebBrowserIndex) is the webbrowser
control. Now how do I set the page on the control? Using
ax.Navigate within this procedure gives me the following error

'An unhandled exception of type 'InvalidActiveXStateException'
occurred in systems.windows.forms.dll'

and is not ideal in any case, since I'm not sure if the object ax
will continue to exist outside this procedure. But trying to access
the method via

Me.Controls(WebBrowserIndex).Navigate

doesn't work at all, as Navigate is not a member of
System.Windows.Forms.Control, despite being a member of _that
particular_ control.

Incidentally, if anyone can get Form3 to locate and size
appropriately with an axwebbrowser control inside at designtime then
this will save me a lot of headaches. But I reckon I'll probably
want to access methods of controls in collections sooner or later, so
I'll still be grateful for help in this.

DirectCast(Me.Controls(WebBrowserIndex),AxSHDocVw.AxWebBrowser).Navigate

Placing "option strict on" at the top of your form will help you avoid
this issue in the future.

Chris
 
Y

Yuk Tang

Chris said:
DirectCast(Me.Controls(WebBrowserIndex),AxSHDocVw.AxWebBrowser).Nav
igate

Placing "option strict on" at the top of your form will help you
avoid this issue in the future.

Thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top