elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  autocomplete en textbox c#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: autocomplete en textbox c#  (Leído 4,447 veces)
SAGA-gl

Desconectado Desconectado

Mensajes: 45


Ver Perfil
autocomplete en textbox c#
« en: 26 Mayo 2015, 06:06 am »

buenas noches gente del foro...verán tengo una duda...estoy haciendo una aplicación de escritorio en la cual ingreso una serie de datos para darlos de alta en una tabla en una bd....verán cuando ingreso el nro d orden en el textbox presionaba un botón consultar para ver si ya se encontraba esa orden registrada si no estaba, habilitaba los controles para cargar los datos y luego registrarlos....al exponer esta parte d la aplicación (mi tesis) la profesora m la rechazo ya q es tedioso para el usuario presionar un botón para consultar sobre un dato si esta registrado o no....x lo q se m ocurrio implementar un autocomplete en el textbox.....m podrían ayudar sobre la implementación es decir ejemplos y demás? creo entender q al ir escribiendo el dato en el textbox hace la consulta y va trayendo los datos q tngan ese valor? y si no esta podría activar los otros controles y demás x ejemplo?
espero no causar muchas molestias y dsd ya muchas grax
expongo el código q fui realizando hst el momento
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace RegistrarOCspp2
  11. {
  12.    public partial class RegistrarOrden : Form
  13.    {
  14.        public RegistrarOrden()
  15.        {
  16.            InitializeComponent();
  17.  
  18.        }
  19.  
  20.        private void studioButton2_Click(object sender, EventArgs e)
  21.        {
  22.            this.Close();
  23.        }
  24.  
  25.        private void RegistrarOrden_Load(object sender, EventArgs e)
  26.        {
  27.            // TODO: esta línea de código carga datos en la tabla 'proyectoSaludDataSet7.medicamentos1' Puede moverla o quitarla según sea necesario.
  28.            this.medicamentos1TableAdapter.Fill(this.proyectoSaludDataSet7.medicamentos1);
  29.  
  30.        }
  31.  
  32.        private static void OnlyNumber(KeyPressEventArgs e, bool isdecimal)
  33.        {
  34.            String aceptados;
  35.            if (!isdecimal)
  36.            {
  37.                aceptados = "0123456789," + Convert.ToChar(8);
  38.            }
  39.            else
  40.                aceptados = "0123456789." + Convert.ToChar(8);
  41.  
  42.            if (aceptados.Contains("" + e.KeyChar))
  43.            {
  44.                e.Handled = false;
  45.            }
  46.            else
  47.            {
  48.                e.Handled = true;
  49.            }
  50.        }
  51.  
  52.        private void txtUnidad_KeyPress(object sender, KeyPressEventArgs e)
  53.        {
  54.  
  55.            if (!Char.IsNumber(e.KeyChar) && e.KeyChar != (char)8)
  56.            {
  57.  
  58.                e.Handled = true;
  59.                OnlyNumber(e, false);
  60.  
  61.            }
  62.        }
  63.  
  64.        private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
  65.        {
  66.  
  67.            if (!Char.IsNumber(e.KeyChar) && e.KeyChar != (char)8)
  68.            {
  69.  
  70.                e.Handled = true;
  71.                OnlyNumber(e, false);
  72.  
  73.            }
  74.        }
  75.  
  76.        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
  77.        {
  78.            if (char.IsDigit(e.KeyChar))
  79.                e.Handled = false;
  80.            else if (char.IsControl(e.KeyChar))
  81.                e.Handled = false;
  82.            else if (char.IsSeparator(e.KeyChar))
  83.                e.Handled = false;
  84.            else
  85.                e.Handled = true;
  86.        }
  87.  
  88.  
  89.        private void textBox1_Click(object sender, EventArgs e)
  90.        {
  91.            System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
  92.            ToolTip1.SetToolTip(this.txtNumero, "Ejemplo: 2290");
  93.            txtCantidad.Enabled = true;
  94.  
  95.        }
  96.  
  97.        private void button1_Click(object sender, EventArgs e)
  98.        {
  99.            if (txtCantidad.Text == "" || txtPrograma.Text == "" || txtPrecio.Text == "")
  100.            {
  101.  
  102.                DialogResult ds = MessageBox.Show(this, "DEBE COMPLETAR TODOS LOS CAMPOS", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  103.                this.Text = ds.ToString();
  104.  
  105.            }
  106.            else
  107.  
  108.                if (txtCantidad.Text != "" || txtPrograma.Text != "" || txtPrecio.Text != "")
  109.                {
  110.  
  111.  
  112.                    string medicamento = comboMedicamento.Text;
  113.                    int cantidad = int.Parse(txtCantidad.Text);
  114.                    string programa = txtPrograma.Text;
  115.                    float precio = float.Parse(txtPrecio.Text);
  116.                    dgv.Rows.Add(medicamento, cantidad, programa, precio, cantidad * precio);
  117.                    button3.Enabled = true;
  118.  
  119.  
  120.                }
  121.  
  122.        }
  123.  
  124.        private void button4_Click(object sender, EventArgs e)
  125.        {
  126.            this.Close();
  127.        }
  128.  
  129.  
  130.        private void button3_Click(object sender, EventArgs e)
  131.        {
  132.  
  133.  
  134.            int fila = dgv.CurrentRow.Index;
  135.            if (fila == 0)
  136.                button3.Enabled = false;
  137.            dgv.Rows.RemoveAt(fila);
  138.  
  139.  
  140.  
  141.        }
  142.  
  143.  
  144.  
  145.  
  146.  
  147.    }
  148. }
  149.  


En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: autocomplete en textbox c#
« Respuesta #1 en: 26 Mayo 2015, 07:20 am »

Hola como estas.

Si a tu profesora no le gusto que el usuario aprete el boton para buscar puedes usar el evento KeyDown para buscar el codigo y dejar el foco ahi para que siga buscando.

Aca te dejo un ejemplo cuando presione Enter dentro de textbox busque tu registro, espero me entiendas es lo unico que se me ocurre.

Código
  1. Private Sub txtBuscarEmpleado_KeyDown(sender As Object, e As KeyEventArgs) Handles txtBuscarEmpleado.KeyDown
  2.        If (e.KeyCode = Keys.Enter) Then
  3.            buscarCodigoEmpleado()
  4.            txtBuscarEmpleado.focus()
  5. End If




Veo que Elektro te dio una solucion mas facil puedes cargar tu registros al combox desde la BD y luego el auto completado como el indica.

Saludos


« Última modificación: 26 Mayo 2015, 07:29 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: autocomplete en textbox c#
« Respuesta #2 en: 26 Mayo 2015, 07:22 am »

Puedes utilizar un TextBox o también un ComboBox, el procedimiento es el mismo que explico a continuación, pero si los datos que se puedan buscar ya están pre-definidos entonces preferiblemente utiliza un ComboBox, no un TextBox.

Asignas el modo de completado deseado a la propiedad ComboBox.AutoCompleteMode, y el valor de ComboBox.AutoCompleteSource por la lista de items actual (AutoCompleteSource.ListItems) o una colección de strings personalizada (AutoCompleteSource.CustomSource)

Ejemplo en VB.Net (para no ponértelo todo tan fácil):
Código
  1. Dim items As String() = {"qwerty", "asdfg", "zxcvb"}
  2.  
  3. Dim autoCompleteSource As New AutoCompleteStringCollection
  4. autoCompleteSource.AddRange(items)
  5.  
  6. With ComboBox1
  7.    .SuspendLayout()
  8.    .BeginUpdate()
  9.  
  10.    .Items.AddRange(items)
  11.    .AutoCompleteCustomSource = autoCompleteSource
  12.    .AutoCompleteMode = AutoCompleteMode.SuggestAppend
  13.    .AutoCompleteSource = Windows.Forms.AutoCompleteSource.CustomSource
  14.  
  15.    .EndUpdate()
  16.    .ResumeLayout()
  17. End With

El resto sería cómo ha comentado @nolasco281, te suscribes al evento ComboBox.KeyDown (o también ComboBox.SelectedValueChanged con una diferencia de funcionalidad), y realizas la query.

Saludos!
« Última modificación: 26 Mayo 2015, 07:33 am por Eleкtro » En línea



seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: autocomplete en textbox c#
« Respuesta #3 en: 26 Mayo 2015, 07:23 am »

en realidad no, el AutoComplete no consulta a ningun lado mientras escribis, digamos que es un "array precargado" de strings que ya estan cargados en el control, y cuando escribis lo unico que hace es buscar sobre ese "array interno", sino imaginate cada vez que escribis tendrias que consultar la base de datos y seria un tremendo gasto de recursos.

en internet podes encontrar un monton de ejemplos de autocomplete simple en .NET, son pocas lineas de codigo, despues adaptalo a lo tuyo.

saludos.
En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: autocomplete en textbox c#
« Respuesta #4 en: 26 Mayo 2015, 19:04 pm »

Creo que con lo que dice @Eleкtro ya lo tienes resuelto, igual, cualquier cosa pregunta de nuevo.

Ahora, quiero hacerte una sugerencia, esto es algo que realmente puedes tener en cuenta para el desarrollo de tus proyetos. Utiliza un solo lenguaje para definir tus cosas, o sea, si utilizas el español para identificar tus variables, métodos, etc. Mantenlo así en todo el proyecto, evita utilizar español aquí e inglés alla. También sería bueno si te acostumbraras a darle nombres descriptivos a tus controles/variables y evitar cosas como Button1, Button2, etc. Esto le dará claridad a tu código

Salu2s
En línea

SAGA-gl

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: autocomplete en textbox c#
« Respuesta #5 en: 27 Mayo 2015, 06:47 am »

como siempre....me han servido d gran ayuda vuestros comentarios muchas grax x responder SLDS!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
tomar de un textbox, cambiar y pegar en otro textbox
Programación Visual Basic
Nakp 9 5,423 Último mensaje 2 Septiembre 2006, 18:42 pm
por Nakp
¿Como crear un textbox y grabar lo que se puse en tal textbox en visual basic 8?
Programación Visual Basic
El anonimato 3 6,798 Último mensaje 25 Noviembre 2010, 16:10 pm
por NightMore
AutoComplete en un Textbox o Combobox
.NET (C#, VB.NET, ASP)
proteus8 1 4,353 Último mensaje 6 Abril 2011, 01:34 am
por seba123neo
autocomplete con angularjs
Desarrollo Web
landerzx 0 1,694 Último mensaje 19 Agosto 2013, 20:55 pm
por landerzx
Buscador con autocomplete
Desarrollo Web
itzg3 1 1,874 Último mensaje 19 Abril 2014, 16:43 pm
por DanB
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines