Ниже приведена кнопка, при нажатии она вызывает функцию, которая связывает множество IP-адресов. Если IP-адрес возвращает ответ, он добавляет IP-адрес в output_networkSearch.Text.Изменение Textbox.text в рамках метода; Для цикла, не связанного с циклом из-за возврата
private void button_networkSearch_Click(object sender, RoutedEventArgs e)
{
output_networkSearch.Text = networkSearch(Convert.ToInt32(input_searchLimit.Text));
}
Ниже представлен не весь метод, а только та часть, с которой я не могу работать. Цикл for начинается с любой последней цифры на IP-адресе шлюза пользователей по умолчанию и останавливается на любом лимите, который они ввели (1 - 255).
// я равен последней цифре в шлюз по умолчанию IP, если он был 192.168.0.1, то я = 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;
}
}
Это работало на консольное приложение, но для приложения WPF кажется для запуска цикла через один раз и остановки из-за оператора return.
Моя идея обойти это было бы, чтобы удалить операторы Return Response и попробовать и получить доступ к TextBox (output_networkSearch) напрямую.
Так что я хотел бы сделать что-то вроде:
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;
}
}
ОДНАКО, я не могу получить доступ к текстовому полю в рамках метода по некоторым причинам. Я только начал изучать C#, поэтому я не совсем понял, как это работает.
Вот изображение частично работающей концепции. Как вы можете видеть, предел установлен на 10, поэтому он должен ping IP-адреса с 1 по 10 и дать ответ ACTIVE или CLOSED. Это действительно работало в моей версии консольного приложения.
Я бы изменил метод, чтобы вместо «return response» «Я бы добавил успешный IP-адрес к строке. затем в конце цикла for верните строку. то вы можете обновить текстовое поле этой строкой в соответствии с нормальным. Нижняя сторона этого заключается в том, что текстовое поле обновляется только после того, как все IP-адреса были отсканированы, а не постоянное обновление. – meganaut