2017-10-14 16 views
1

J'ai besoin d'aide pour obtenir les données d'un formulaire Dotnetbrowser. En fait, je veux ajouter un événement d'écoute sur un bouton, lorsque ce bouton est cliqué, je reçois les données, par exemple:donetbrowser COMMENT OBTENIR DES DONNEES DE FORMULAIRE DEPOSEES D 'UN Dotnetbrowser?

<!DOCTYPE html> 
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
    <body> 
    <h1>Hello!!!</h1><br> 
    <form 
     id="formTrying" 
     method="post" 
     action="http://localhost/MyWebSite/MyMvcView?MyQueryStringParam1=something&Param2=something" 
    > 
     <input name="txtSomething" type="text" value="Trying something..."><br> 
     <input type="submit" value="Submit..."> 
    </form> 
    </body> 
</html> 

Lorsque je clique sur le bouton d'envoi, je reçois la valeur de " txtQuelque chose ". Ou lorsque le dotnetbrowser détecte un formulaire, j'obtiens la valeur de "txtSomething".

Merci d'avance. ;)

Répondre

2

Vous pouvez enregistrer un écouteur d'événement OnClick pour l'élément DOM correspondant pour être informé sur les clics.

Dans votre cas, cela peut être fait, comme indiqué ci-dessous:

browser.FinishLoadingFrameEvent += delegate (object sender, FinishLoadingEventArgs e) 
{ 
    if (e.IsMainFrame) 
    { 
     DOMDocument document = e.Browser.GetDocument(); 
     List<DOMNode> inputNodes = document.GetElementsByTagName("input"); 
     DOMInputElement submitElement = (DOMInputElement)inputNodes.LastOrDefault(); 

     DOMEventHandler domEvent = delegate (object s, DOMEventArgs args) 
     { 
      //Obtain the value of the txtSomething field 
      DOMInputElement txtSomethingElement = (DOMInputElement)document.GetElementByName("txtSomething"); 
      string value = txtSomethingElement.Value; 
      Console.Out.WriteLine("txtSomething value = " + value); 
     }; 

     submitElement.AddEventListener(DOMEventType.OnClick, domEvent, false); 
    } 
}; 
browser.LoadHTML(@"<!DOCTYPE html> 
<html lang='en' xmlns='http://www.w3.org/1999/xhtml'> 
    <body> 
    <h1>Hello!!!</h1><br> 
    <form 
     id='formTrying' 
     method='post' 
     action='http://localhost/MyWebSite/MyMvcView?MyQueryStringParam1=something&Param2=something' 
    > 
     <input name='txtSomething' type='text' value='Trying something...'><br> 
     <input type='submit' value='Submit...'> 
    </form> 
    </body> 
</html>"); 

L'article suivant explique en détail comment enregistrer un écouteur d'événement DOM: https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000110034-listening-to-dom-events

En outre, il y a un article montre comment définir les valeurs des champs de formulaire par programme: https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000110038-setting-input-field-value-working-with-form . Les Value et Checked propriétés de l'échantillon sont des propriétés en lecture-écriture qui correspondent aux value et checked propriétés disponibles en JavaScript.

+0

Le point est, la valeur d'entrée a été définie pour la valeur = « Essayer quelque chose ... », quand je l'utilise, j'ai la valeur d'origine, et non la valeur actualisée, la valeur initiale est uniquement à des fins d'information, mais ce n'est pas cette valeur que je veux. Si un utilisateur insère une autre valeur, ce que j'attends, je ne peux pas saisir cette information, seulement la valeur initiale. –

+0

Utilisez-vous 'GetAttribute (" value ")' pour obtenir la valeur? Dans ce cas, vous devez utiliser la propriété 'DOMFormControlElement.Value' à la place. La différence entre les attributs et les propriétés est expliquée ici: https://stackoverflow.com/questions/6003819/properties-and-attributes-in-html –

+0

Merci, c'est exactement ce que je veux. –