2012-12-01 76 views
3

林填充在Web瀏覽器控件站點,問題是該網站包含兩個dropdownlists和它們鏈接到對方喜歡的Visual Basic - 選擇Dropdownlists選項

<select name="dropdown1" id="dropdown1"> 
<option value="1"test1</option> 
<option value="2"test2</option> 
</select> 
<select....> 
<option value="">&nbsp;</option> 
</select> 

如果我使用

Webbrowser1.document.getelementbyid("dropdown1").setattribute("Value", "1") 

它確實選擇了dropdownlist1的值1,但它沒有激活屬於第一個下拉列表中的選項的選項dropdownlist 2

唯一的方法是我得到它w orking是用鼠標選中它並點擊我的選項,但我希望它是自動的。我希望我已經很好地通知了你。

+0

第二個dropdownlist dosnt有任何id?或名字?我想它有一個像dropdown2這樣的名字。所以你只需要添加與其他ID相同的代碼。 Webbrowser1.document.getelementbyid(「dropdown2」)。setattribute(「Value」,「1」) – samy

+0

@samy是第二個dropdownlist也有一個像dropdown2這樣的id,但是如果單擊第一個dropdown2,不能這樣做自動。如果你使用的代碼,你告訴我它不會功能,因爲沒有價值1 – Gjavado

+1

這是一個猜測!你說這個工作只有當你點擊第一個下拉列表。所以你可以像這樣調用click方法:'Webbrowser1.document.getelementbyid(「dropdown1」)。InvokeMember(「click」);''或者那個嘗試的instad' Webbrowser1.Document.GetElementById(「dropdown1」)。 ;' – samy

回答

0

Webbrowser是WPF臭名昭着的窮人,並與它的交互是不是更好。如果你可以避免使用它,我強烈建議避免它。

當我不得不使用它時,通常我會通過JavaScript進行所有交互。我將在由Webbrowser服務的頁面上設置JavaScript函數,並從WPF代碼中調用它。這樣所有的DOM交互都是由網頁本身完成的。

在這種情況下,你將有HTML類似:

<!DOCTYPE html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <title></title> 

    <script type="text/javascript"> 
     function selectOption(param) 
     { 
      if (param == "value3") { 
       var combo1 = document.getElementById("dropdown1"); 
       combo1.value = 3; 
      } 
     } 

    </script> 
</head> 
<body> 
    <form> 
     <select name="dropdown1" id="dropdown1"> 
      <option value="1">test 1</option> 
      <option value="2">test 2</option> 
      <option value="3">test 3</option> 
     </select> 
     <select name="dropdown2" id="dropdown2"> 
      <option value="a">test a</option> 
      <option value="b">test b</option> 
     </select> 
    </form> 
</body> 
</html> 

XAML:

<Window x:Class="StackOverflowWorkbench.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <StackPanel> 
     <Button Click="Button_Click_1" Content="Click Me!" /> 
     <WebBrowser Name="MyBrowser" /> 
    </StackPanel> 
</Window> 

XAML.CS:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     MyBrowser.Navigate(Directory.GetCurrentDirectory() + "/HTMLPage1.html"); 
    } 

    private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     MyBrowser.InvokeScript("selectOption", new String[] { "value3" }); 
    } 
} 

示例代碼依然不改第二下拉菜單,但是因爲您現在直接使用JavaScript與DOM交互,所以您可以輕鬆訪問它。例如,您可以擴展selectOption函數以直接訪問它。

+0

非常感謝你爲我解答問題所付出的努力,但這種方法對我來說有點新意,而且我的html在html中的表現還不錯, java和C#所以我怎樣才能在我的視覺基本形式中使用它?編輯:我想填寫的網站不是我的 – Gjavado

+0

啊...使用一個你不能編輯的HTML網站不允許你使用這個方法,我將不得不更多地研究它。 –