2009-09-17 7 views
1

J'ai un simple AP C# WinForms Crud AP pour les employés qui doivent faire beaucoup de simples recherches sur le Web. Actuellement, il charge 5 sites Web et met un terme de recherche dans le presse-papiers. L'employé doit ensuite coller le terme de recherche dans la zone de texte de recherche sur chacun des sites et appuyer sur Entrée. Y a-t-il un moyen simple d'entrer les données pour eux? La zone de texte de recherche a généralement un focus lorsque les sites se chargent, je ne trouve tout simplement pas un moyen de détecter quand la page a été chargée ou comment envoyer les données à la fenêtre.Contrôle du navigateur simple en C#

Il semble, à partir de ces réponses utiles, comme si j'allais à ce sujet dans le mauvais sens. J'utilisais code trouvé avec l'aide de mon bon ami, M. Google

System.Diagnostics.Process.Start("www.website.com"); 
Clipboard.SetText(textBox1.Text, TextDataFormat.Text); 

Je ferai quelques recherches cette semaine sur le contrôle WebBrowser

Répondre

3

Vous pouvez utiliser l'événement DocumentCompleted de WebBrowser pour être informé lorsque la page a terminé le chargement.

Si la zone de texte que vous saisissez votre texte en a un identifiant unique, vous pouvez utiliser WebBrowser.Document.GetElementById:

webBrowser.Document.GetElementById("some_id").InnerText = theSearchText; 

GetElementById renvoie une instance de HtmlElement (ou nulle, si l'élément n » était pas t trouvé). Notez que ".InnerText" peut ne pas fonctionner pour tous les types d'éléments, il y a aussi InnerHtml et beaucoup d'autres propriétés, je vous recommande de jouer avec la classe HtmlElement avant de décider comment l'utiliser. Faites-moi savoir si vous n'avez pas d'identifiant unique pour l'élément, il y a beaucoup d'autres façons de trouver un élément. y compris en utilisant le DOM exposé via Document.Body.

+0

Merci, vous m'avez beaucoup aidé –

1

Vous devriez pouvoir brancher dans le cas Navigated du Webbrowser cela devrait vous dire quand la page est Loaded (je pense que je ne suis pas sûr à 100%). En ce qui concerne la définition du texte, si vous êtes sûr que la zone de texte a le focus que vous pouvez faire quelque chose comme ceci:

 Clipboard.SetText("Stackoverflow"); 
     this.webBrowser1.Document.ExecCommand("Paste", false, null); 
0

L'événement DocumentCompleted de WebBrowser est déclenché lorsqu'une page (ou une image!) Est chargée. Lorsqu'une page contient des cadres, l'événement DocumentCompleted se déclenche plusieurs fois. Dans l'événement DocumentCompleted vous comparez la propriété ReadyState avec ReadyState.Completed pour vérifier si elle est entièrement chargée.

Mais en général, l'utilisation de SendKeys n'est pas la meilleure façon de procéder. La réponse de Matthew Brindley (pour utiliser GetElementById) est la meilleure, bien que cela ne fonctionne pas pour les contrôles d'entrée de fichier.