Menú

Mostrar Mensajes

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ú

Mensajes - .::IT::.

#2
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:

Código (csharp,3) [Seleccionar]
cmbZonaHoraria.ValueMember = "Id";
cmbZonaHoraria.DisplayMember = "DisplayName";
cmbZonaHoraria.DataSource = TimeZoneInfo.GetSystemTimeZones();


Saludos

;-) listo quedo claro hace ya tiempo que no uso windows forms  :xD
#3
Holas tengo un pequeño detalle para llenar un combobox con  TimeZoneInfo.GetSystemTimeZones() lo que hago es lo siguiente:

Código (csharp) [Seleccionar]

private void CargarZonasHorarias()
        {
            ReadOnlyCollection<TimeZoneInfo> zonas = TimeZoneInfo.GetSystemTimeZones();
            cmbZonaHoraria.DataSource = zonas;
            cmbZonaHoraria.DisplayMember = "DisplayName";
            cmbZonaHoraria.ValueMember = "Id";
        }


el detalle es que al llamar a cmbZonaHoraria.SelectedValue.ToString() esperaria obtener el Id del TimeZoneInfo seleccionado pero no es asi SelectedValue devuelve el mismo valor que SelectedItem.

bueno la solucion que hice fue:

Código (csharp) [Seleccionar]

string idZona = (cmbZonaHoraria.SelectedItem  as TimeZoneInfo).Id;


y de esa manera tengo el Id del TimezoneInfo seleccionado:

La pregunta es porque no puedo asignar la propiedad:

Código (csharp) [Seleccionar]
cmbZonaHoraria.ValueMember = "Id";
#4
Y porque mejor no imprimes un código de barras escriba las CCCCCC, code 128 por ejemplo soporta caracteres, no se puede  capturar las pulsaciones del teclado sin tener el foco en una ventana de tu programa, puedes hacer 2 cosas la primera y mas recomendable es escribir un filtro de controlador (https://msdn.microsoft.com/en-us/library/windows/hardware/ff545890%28v=vs.85%29.aspx) asi solo tu programa seria el que reconozca las pulsaciones de lector de codigo de barras lo otro es usar las api de windwos para capturar las pulsaciones de un determinado teclado mira aqui hay un ejemplo en C# http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/. Aunque tambien podrias escribir una especie de keylogger que capture las pulsaciones de todos los teclados y utilice sendkey para enviar ciertas teclas no se que tanto funcione pero bueno si publicas en un foro de programacion te pueden ayudar
#5
Ummm espero que esto de ayude para comenzar yo usaria un TcpListener en lugar de socket, yo usaria 2 clases una que es la que escucha en determinado puerto(Servidor.cs), y otra que procesa(Procesar.cs).
El funcionamiento seria :
1-. Servidor inicia un TcpListener en un determinado puerto y esta a la escucha de las peticiones del cliente usando el metodo "AcceptTcpClient()".
2-. Recibe la peticon del cliente y crea una instancia de la clase Procesar(new Procesar(datoscliente)) que tiene como parametro un odjecto TcpClient(el que es creado usando AcceptTcpClient()).
3-.Teniendo mi objeto "Procesar" creo un nuevo Thread(proceso) en el cual invoco a un metodo al que llamaria "process"
4.-Otra ves llamo a AcceptTcpClient().

Lo que lo hace multiusuario es que cada peticon se procesa en un Thread diferente eso es todo aqui un ejemplo:

Servidor.cs(Escrito directamente aqui en la ventana de posteo no se si compile pero te dara una idea)

Código (csharp) [Seleccionar]

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
         }
      }
}


Aqui el codigo de la clase Procesar.cs

Código (csharp) [Seleccionar]
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
      }
}


Bueno esa es la extructura basica con la que yo trabajaria aunque e visto otras formas pero que no me convecieron mucho.

Por ultimo usamos nuestra clase servidor en nuestro metodo principal con

Servidor myServer=new Servidor()
myServer.Start();

#6
debes usar cookies para almacenar las que te devuelve el servidor
CookieContainer myCookie;

luego a tu HttpWebRequest se la asignas:

req.CookieContainer = myCookie;

Y esta Cookie debe ser unica en todo el programa y siempre se la asignas a cualquier HttpWebRequest que vas usar para Hacer peticiones al servidor.


#7
Con montar un servidor telnet y copiar tu app al sistem 32 deberia funcionar o sino realizas tu propia implementacion de telnet aqui un link de ejemplo que encontre con google:

http://stackoverflow.com/questions/19169893/simple-telnet-console-that-listens-and-accepts-connections
#8
.NET (C#, VB.NET, ASP) / Re: Duda sobre c#
26 Noviembre 2014, 02:42 AM
En tu control de usuario debes colocar una Propiedad que devuelta el boton algo asi como

Public Botton GetBoton
{
     get{return myBoton;}
}

Y esa propiedad la manejas des cualquier formulario donde coloques el control
#9
Y porque no usas directamente un INSERT INTO???
#10
.NET (C#, VB.NET, ASP) / Re: Programa en C#
4 Agosto 2014, 01:25 AM
Supongo que seria algo asi toma en cuenta que no valido los datos de entrada:


        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;
            }

        }