Archive for the ‘Códigos de la vida irreal’ Category

  • Permitir sólo números en textBox

    5

    Si estas usando textBox para recibir datos que solo pueden ser numéricos, probablemente este codigo te servirá.

    Necesitas una funcion (en este caso llamada IsDigit)

            public static bool isDigit(KeyPressEventArgs e, string texto)
            {
                bool IsDec = false;
                int nroDec = 0;
    
                try
                {
                    if (e.KeyChar == 8)
                    {
                        return false;
                    }
    
                    for (int i = 0; i < texto.Length; i++)
                    {
                        if (texto[i] == '.')
                        {
                            IsDec = true;
                        }
                        if (IsDec && nroDec++ >= 2)
                        {
                            return true;
                        }
                    }
    
                    if (e.KeyChar >= 48 && e.KeyChar <= 57)
                    {
                        return false;
                    }
                    else
                    {
                        if (e.KeyChar == 46)
                        {
                            if (IsDec)
                            {
                                return true;
                            }
                            else
                            {
                                return false;
                            }
                        }
                        else
                        {
                            return true;
                        }
                    }
                }
                catch (Exception Ex)
                {
                    throw new Exception(Ex.Message);
                }
            }

    Para usarla, en el evento KeyPress del textBox, pones lo siguiente:

            private void textBox_KeyPress(object sender, KeyPressEventArgs e)
            {
               e.Handled = isDigit(e, textBox.Text);
            }

    Eso te permite meter solo números y un punto con dos decimabesl. Probablemente no sea la función mas optima, pero a mi me funciona bien.

    El código lo encontré en la web del Guille.

  • Imágenes en ListBox

    8

    listboxActualmente estoy trabajando en un proyecto que incluye un punto de venta.

    Como la mayoria de los programadores que conosco, lo primero que pense fue un grid, pero al presentar la propuesta, me la regresaron.

    Me pidieron algo mas simple y que funcionara como un log, algo así como un ListBox, pero querian que en la descripción del artículo, mostrara la imágen del mismo.

    La verdad no sabia como hacerlo, aunque buscando en internet me di cuenta de que es algo demasiado sencillo, así que aquí pongo los pasos:

    1. En una Forma agrega el listBox y un ImageList.
    2. Crea una clase llamada listItem, que contendrá lo siguiente:
        class listItem
        {
            private int _imageIndex;
            private string _etiqueta;
    
            public string Etiqueta
            {
                get { return _etiqueta; }
                set { _etiqueta = value; }
            }
    
            public int ImageIndex
            {
                get { return _imageIndex; }
                set { _imageIndex = value; }
            }
    
            public listItem(string etiqueta, int imageIndex)
            {
                this.Etiqueta = etiqueta;
                this.ImageIndex = imageIndex;
            }
    
            public override string ToString()
            {
                return Etiqueta;
            }
        }

    Para agregar los Items con sus respectivos iconos al ListBox, usamos la siguiente función:

    listBox1.Items.Add(new listItem("Item Uno", 0));

    Ahora, para que se dibuje el ícono al insertar el Item, nos vamos al evento “DrawItem” del ListBox y escribimos lo siguiente:

    listItem item = listBox1.Items[e.Index] as listItem;
    e.DrawBackground();
    
    if (item.ImageIndex >= 0 && item.ImageIndex < imageList1.Images.Count)
    {
        e.Graphics.DrawImage(imageList1.Images[item.ImageIndex],
                             new PointF(e.Bounds.Left, e.Bounds.Top));
    }
    
    e.Graphics.DrawString(item.Etiqueta, e.Font, new SolidBrush(e.ForeColor),
                          new PointF(e.Bounds.Left + imageList1.ImageSize.Width + 1,
                          e.Bounds.Top));

    Y con eso tendremos nuestro ListBox con sus Íconos, aunque con algunos cambios funciona para ComboBox y probablemente para algunos otros componentes similares.

    Ahora sólo me falta descifrar como mostrar fotografías de artículos en un tamaño de 16 x 16 pixeles, pero eso, amigos, es otra historia.

    [Via]:  C#, .Net, SQL Server y sus parientes cercanos