Autor
|
Tema: autocomplete en textbox c# (Leído 4,505 veces)
|
SAGA-gl
Desconectado
Mensajes: 45
|
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 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace RegistrarOCspp2 { public partial class RegistrarOrden : Form { public RegistrarOrden() { InitializeComponent(); } private void studioButton2_Click(object sender, EventArgs e) { this.Close(); } private void RegistrarOrden_Load(object sender, EventArgs e) { // TODO: esta línea de código carga datos en la tabla 'proyectoSaludDataSet7.medicamentos1' Puede moverla o quitarla según sea necesario. this.medicamentos1TableAdapter.Fill(this.proyectoSaludDataSet7.medicamentos1); } private static void OnlyNumber(KeyPressEventArgs e, bool isdecimal) { String aceptados; if (!isdecimal) { aceptados = "0123456789," + Convert.ToChar(8); } else aceptados = "0123456789." + Convert.ToChar(8); if (aceptados.Contains("" + e.KeyChar)) { e.Handled = false; } else { e.Handled = true; } } private void txtUnidad_KeyPress(object sender, KeyPressEventArgs e) { if (!Char.IsNumber(e.KeyChar) && e.KeyChar != (char)8) { e.Handled = true; OnlyNumber(e, false); } } private void textBox3_KeyPress(object sender, KeyPressEventArgs e) { if (!Char.IsNumber(e.KeyChar) && e.KeyChar != (char)8) { e.Handled = true; OnlyNumber(e, false); } } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsDigit(e.KeyChar)) e.Handled = false; else if (char.IsControl(e.KeyChar)) e.Handled = false; else if (char.IsSeparator(e.KeyChar)) e.Handled = false; else e.Handled = true; } private void textBox1_Click(object sender, EventArgs e) { System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip(); ToolTip1.SetToolTip(this.txtNumero, "Ejemplo: 2290"); txtCantidad.Enabled = true; } private void button1_Click(object sender, EventArgs e) { if (txtCantidad.Text == "" || txtPrograma.Text == "" || txtPrecio.Text == "") { DialogResult ds = MessageBox.Show(this, "DEBE COMPLETAR TODOS LOS CAMPOS", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); this.Text = ds.ToString(); } else if (txtCantidad.Text != "" || txtPrograma.Text != "" || txtPrecio.Text != "") { string medicamento = comboMedicamento.Text; int cantidad = int.Parse(txtCantidad.Text); string programa = txtPrograma.Text; float precio = float.Parse(txtPrecio.Text); dgv.Rows.Add(medicamento, cantidad, programa, precio, cantidad * precio); button3.Enabled = true; } } private void button4_Click(object sender, EventArgs e) { this.Close(); } private void button3_Click(object sender, EventArgs e) { int fila = dgv.CurrentRow.Index; if (fila == 0) button3.Enabled = false; dgv.Rows.RemoveAt(fila); } } }
|
|
|
En línea
|
|
|
|
nolasco281
Desconectado
Mensajes: 319
|
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. Private Sub txtBuscarEmpleado_KeyDown(sender As Object, e As KeyEventArgs) Handles txtBuscarEmpleado.KeyDown If (e.KeyCode = Keys.Enter) Then buscarCodigoEmpleado() txtBuscarEmpleado.focus() 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
Mensajes: 9.885
|
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): Dim items As String() = {"qwerty", "asdfg", "zxcvb"} Dim autoCompleteSource As New AutoCompleteStringCollection autoCompleteSource.AddRange(items) With ComboBox1 .SuspendLayout() .BeginUpdate() .Items.AddRange(items) .AutoCompleteCustomSource = autoCompleteSource .AutoCompleteMode = AutoCompleteMode.SuggestAppend .AutoCompleteSource = Windows.Forms.AutoCompleteSource.CustomSource .EndUpdate() .ResumeLayout() 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
|
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
Mensajes: 1.263
Be the change you wanna see in te world
|
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
Mensajes: 45
|
como siempre....me han servido d gran ayuda vuestros comentarios muchas grax x responder SLDS!!!
|
|
|
En línea
|
|
|
|
|
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,457
|
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,854
|
25 Noviembre 2010, 16:10 pm
por NightMore
|
|
|
AutoComplete en un Textbox o Combobox
.NET (C#, VB.NET, ASP)
|
proteus8
|
1
|
4,371
|
6 Abril 2011, 01:34 am
por seba123neo
|
|
|
autocomplete con angularjs
Desarrollo Web
|
landerzx
|
0
|
1,721
|
19 Agosto 2013, 20:55 pm
por landerzx
|
|
|
Buscador con autocomplete
Desarrollo Web
|
itzg3
|
1
|
1,907
|
19 Abril 2014, 16:43 pm
por DanB
|
|