Cita de: TickTack en 11 Julio 2017, 09:15 AM
en el evento del click de un boton escribi esto:Código [Seleccionar]
Adapters obj = new Adapters();
var value = obj.net_adapters();
Lo que estás haciendo no es del todo correcto, estás creando una instancia de una clase solamente para usar un miembro de uso genérico; en su lugar deberías asignarle un nivel de acceso global (keyword static en C#) al método, y llamarlo diréctamente, de esta forma estarás escribiendo código rehutilizable que te servirá para cualquier otro proyecto en el futuro...
Código (csharp) [Seleccionar]
public class Adapters {
public static string net_adapters() {
// ...
}
}
Código (csharp) [Seleccionar]
string value = Adapters.net_adapters();
Cita de: TickTack en 11 Julio 2017, 09:15 AMCódigo (csharp,6) [Seleccionar]public string net_adapters()
{
string value = string.Empty;
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
value = nic.Name;
}
return value;
}
Pero al probar el codigo, en el textBox multilineado me sale conexión Lan* 2.
Esta bien eso?
Fíjate bien en el código que has escrito, sobre todo en la linea que he resaltado... la función NetworkInterface.GetAllNetworkInterfaces() devuelve todas las interfaces de red que tienes (el propio nombre de la función se explica por si mismo), y en cada iteración tú estás reemplazando el valor de la variable "value", esto quiere decir que al final de ese bloque de código solo devuelves el nombre de la interfáz de la última iteración del búcle, y esa puede tener cualquier nombre... dependiendo del equipo, idioma del S.O y su configuración.
Partiendo de la premisa de que el programador no puede tener la certeza de la cantidad de interfaces/conexiones de red existentes en un equipo, tu función y la forma en que vas a representar dicha información en la UI debes adaptarlo todo para esperar devolver y representar una secuencia de elementos (un array), no esperar solamente que se devuelva 1 única interfáz, por que esa asunción no puedes hacerla. A través de tu UI puedes permitir la selección manual o automática de una de las interfaces de red que estén disponibles. Y para devolver unicamente interfaces wi-fi debes añadir un criterio adicional, evaluando el valor de la propiedad NetworkInterface.NetworkInterfaceType en cada iteración...
No tengo wi-fi presente en este PC, así que el siguiente código que he escrito no he podido verificarlo, pero en teoría solamente debería devolverte las interfaces wi-fi/wireless:
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.NetworkInformation;
Código (csharp) [Seleccionar]
public sealed class NetworkUtils {
[DebuggerNonUserCode()]
private NetworkUtils() {}
[DebuggerStepThrough()]
public static IEnumerable<NetworkInterface> EnumerateWirelessAdapters() {
foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) {
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) {
yield return adapter;
}
}
}
}
Código (csharp) [Seleccionar]
IEnumerable<NetworkInterface> adapters = NetworkUtils.EnumerateWirelessAdapters();
foreach (NetworkInterface adapter in adapters) {
Console.WriteLine(adapter.Name);
}
Saludos