Porting web navigator from VB6 to VS2005 C#


C

cweeks

I am porting a VB 6.0 application to C# that automates navigation of
multiple web pages within a site and extracts information from some of
the pages. One of the pages contains a listbox containing a number of
countries. The default value that is set is not the value I need to
use.

The HTML in the web page looks like this:

<select name="country" style="" onchange="" multiple id="countryList"
size="7">
<option value="*" selected> All Countries and Territories </option>
<option value="------0">------</option>
<option value="AU"> Australia </option>
<option value="AT"> Austria </option>
<option value="BE"> Belgium </option>
<option value="BR"> Brazil </option>
<option value="CA"> Canada </option>
<option value="CN"> China </option>
<option value="DK"> Denmark </option>
<option value="FI"> Finland </option>
<option value="FR"> France </option>
<option value="DE"> Germany </option>
<option value="HK"> Hong Kong </option>
<option value="IT"> Italy </option>
<option value="JP"> Japan </option>
<option value="NL"> Netherlands </option>
<option value="NO"> Norway </option>
<option value="PT"> Portugal </option>
<option value="SG"> Singapore </option>
<option value="KR"> South Korea </option>
<option value="ES"> Spain </option>
<option value="SE"> Sweden </option>
<option value="CH"> Switzerland </option>
<option value="TW"> Taiwan </option>
<option value="GB"> United Kingdom </option>
<option value="US"> United States </option>
</select>

In VB6 the selected value is changed this way:

' De-select the first (default) value in the list
wb1.All("country").Options(0).Selected = False
' Select the 26th item (zero-based index) in the list
wb1.All("country").selectedIndex = 25

wb1 is an HTMLDocument object.

I cannot figure out how to access the Options collection or the
selectedIndex property with the .NET 2.0 Webbrowser object. Any ideas
how I can do this in C#?
 
Ad

Advertisements

V

V

hi,
I am not sure but you would probably need to first cast to a ComboBox
type before you can access the properties.

Regards,
Vaibhav
 
C

cweeks

I don't have access to my development system at the moment to try this
out. So, I would appreciate some input as to whether or not this might
work:

IHTMLDocument3 iDoc3 = (IHTMLDocument3)wb1.Document.DomDocument;
IHTMLSelectElement eltCountryList =
iDoc3.getElementById("countryList");
eltCountryList.selectedIndex = 25;

For now, just ignore the absence of error checking for null pointer
values. Is this about the right approach? Will I be able to modify
the <SELECT> element's 'selectedIndex' property without any kind of
initialization or setup code (sometimes it looks like the HTMLDocument
contained in the webbrowser control is read-only)? Do I need to
iterate through each <OPTION> element in the list using the
IHTMLOptionElement interface and set the 'selected' property to false?
 
Ad

Advertisements

C

cweeks

Here's the code that properly selects an element from the listbox:

HtmlElement eltCountryList =
webBrowser1.Document.GetElementById("countryList");
HtmlElementCollection eltOptions =
eltCountryList.GetElementsByTagName("option");

foreach (HtmlElement op in eltOptions)
{
op.SetAttribute("selected", ""); // de-select all items in the
list
}
eltOptions[25].SetAttribute("selected", "True"); // set "United States"
as the selected item
 

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