Ok ya actualice el link https://drive.google.com/file/d/0BwK9ezNtFoJ4M2xLQU43b2RaVEU/view?usp=sharing
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: Eleкtro en 3 Abril 2015, 10:15 AM
Buenas
El codigo funciona bien, lo que ocurre es que al asignar el DataSource se dispara el evento SelectedIndexChanged, y fíjate que tú estás asignando el DataSource antes que las propiedades DisplayMember y ValueMember, por ende el evento SelectedIndexChanged se dispara por primera vez sin tener en cuenta los valores que asignas a dichas propiedades y por ese motivo no te devuelve el valor esperado (TimeZoneInfo.Id).
Lo que debes hacer es muy simple, asignar el DataSource lo último, modifica el orden de los factores de la siguiente manera:cmbZonaHoraria.ValueMember = "Id";
cmbZonaHoraria.DisplayMember = "DisplayName";
cmbZonaHoraria.DataSource = TimeZoneInfo.GetSystemTimeZones();
Saludos
private void CargarZonasHorarias()
{
ReadOnlyCollection<TimeZoneInfo> zonas = TimeZoneInfo.GetSystemTimeZones();
cmbZonaHoraria.DataSource = zonas;
cmbZonaHoraria.DisplayMember = "DisplayName";
cmbZonaHoraria.ValueMember = "Id";
}
string idZona = (cmbZonaHoraria.SelectedItem as TimeZoneInfo).Id;
cmbZonaHoraria.ValueMember = "Id";
public class Servidor
{
private int puerto = 8069; //El puerto en el que corre
TcpListener listener;
public void listen()
{
listener = new TcpListener(IPAndress.Any,puerto);
listener.Start();
//Comiensa el ciclo repetitivo para aceptar peticiones
while(true)
{
TcpClient s = listener.AcceptTcpClient();//En este punto el programa esta detenido esperando al cliente
Procesar p = new Procesar(s);//Aqui ya recibi una peticion
Thread t = new Thread(new ThreadStart(p.process)); // aqui la proceso en un nuevo Thread
t.Start();//Listo es todo nuevamente regresa a s = listener.AcceptTcpClient(); y se repite el proceso
}
}
}
public class Procesar()
{
TcpClient c;
Stream input;//para leer los datos del cliente
StreamWriter output;//para escribir la respuesta
public Procesar(TcpClient socket)
{
this.c= socket;
}
public void process()
{
input = new BufferedStream(c.GetStream());
output = new StreamWriter(new BufferedStream(c.GetStream()));
//Aqui el codigo para procesar input
//la respuesta la enviamos escribiendo en output usando Write o WriteLine
output.Flush();//invocamos al metodo Flush del output
c.close();//cerramos el TcpClient
}
}
static void Main(string[] args)
{
EjecutarPrograma();
Console.WriteLine("Precione una tecla para continuar...");
Console.ReadKey();
}
public static void EjecutarPrograma()
{
bool salir = false;
int num1 = 0;
int num2 = 0;
int respuesta=0;
string operacion = string.Empty;
while (!salir)
{
Console.WriteLine("Ingresar el primer numero");
num1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Ingresar el segundo numero");
num2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Elija la Operacion aritmetica");
Console.WriteLine("Oprima s para SUMAR");
Console.WriteLine("Oprima r para RESTAR");
Console.WriteLine("Oprima m para MULTIPLICAR");
Console.WriteLine("Oprima d para DIVIDIR");
operacion = Console.ReadLine();
switch (operacion)
{
case "s":
respuesta = num1 + num2;
break;
case "r":
respuesta = num1 - num2;
break;
//y asi va agrenando operadores
default:
respuesta = 0;
break;
}
Console.WriteLine(String.Format("La prespuesta es: {0}", respuesta));
//aqui preguntas si quieres continuar
Console.WriteLine("Precione s para continuar");
if (Console.ReadLine() != "s")
salir = true;
}
}