Ci-dessous un bouton, lorsqu'il est pressé, il appelle une fonction qui pings un tas d'adresses IP. Si l'adresse IP renvoie une réponse, elle ajoute l'adresse IP à output_networkSearch.Text.Modification de Textbox.text dans une méthode; Pour boucle non en boucle en raison de Retour
private void button_networkSearch_Click(object sender, RoutedEventArgs e)
{
output_networkSearch.Text = networkSearch(Convert.ToInt32(input_searchLimit.Text));
}
Ci-dessous n'est pas la méthode entière, juste la partie que je ne peux pas obtenir de travailler. La boucle for commence quel que soit le dernier chiffre de l'adresse IP de la passerelle par défaut de l'utilisateur et s'arrête à la limite autorisée (1 - 255).
// i est égal au dernier chiffre de la passerelle par défaut IP, si elle était 192.168.0.1 alors i = 1.
for (int i = Convert.ToInt32(splitGatewayIP[3]); i <= searchLimit; i = i + 1)
{
// If the method receieves a ping reply...
if (PingHostSweep(gatewayIPRebuild + i))
{
// Returns 192.168.0. + i + ACTIVE
string response = gatewayIPRebuild + i + " ACTIVE";
return response;
}
else
{
string response = gatewayIPRebuild + i + " CLOSED";
return response;
}
}
Cela a fonctionné sur une application de la console, mais pour une application WPF il semble pour parcourir la boucle une fois et arrêter en raison de la déclaration de retour.
Mon idée pour contourner ce problème serait de supprimer les instructions de réponse de retour et essayer d'accéder directement au TextBox (output_networkSearch).
Je ferais quelque chose comme:
for (int i = Convert.ToInt32(splitGatewayIP[3]); i <= searchLimit; i = i + 1)
{
// If the method receieves a ping reply...
if (PingHostSweep(gatewayIPRebuild + i))
{
// Returns 192.168.0. + i + ACTIVE
string response = gatewayIPRebuild + i + " ACTIVE";
output_networkSearch.Text = reponse;
}
else
{
string response = gatewayIPRebuild + i + " CLOSED";
output_networkSearch.Text = reponse;
}
}
Cependant, je ne peux pas accéder à la zone de texte dans la méthode pour une raison quelconque. Je viens juste de commencer à apprendre C#, donc je ne suis pas entièrement familier avec le fonctionnement.
Voici une image d'un concept partiellement fonctionnel. Comme vous pouvez le voir, la limite est fixée à 10, donc elle doit pinguer les adresses IP 1 à 10 et donner une réponse ACTIVE ou FERMÉE. Cela a fonctionné dans ma version d'application de console.
Je modifierais la méthode pour qu'au lieu de "retour réponse" "Je voudrais ajouter l'adresse IP réussie à une chaîne. puis à la fin de la boucle for, renvoyez la chaîne. alors vous pouvez mettre à jour la zone de texte avec cette chaîne comme d'habitude. L'inconvénient de ceci est que la zone de texte n'est mise à jour qu'une fois toutes les adresses IP envoyées, plutôt qu'une mise à jour continue. – meganaut