Foros del Web » Programación para mayores de 30 ;) » .NET »

pno puedo pintar un text en el combobox

Estas en el tema de pno puedo pintar un text en el combobox en el foro de .NET en Foros del Web. Buenas foreros una consulta no puedo pintar un text en un combobox les explico: Yo lleno un combobox que lo lleno con el datasource: comboBox1.DataSource ...
  #1 (permalink)  
Antiguo 22/05/2008, 18:32
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 1
De acuerdo pno puedo pintar un text en el combobox

Buenas foreros una consulta no puedo pintar un text en un combobox les explico:

Yo lleno un combobox que lo lleno con el datasource:

comboBox1.DataSource = dataOrigen;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Id";

ahora el combo me muestra diversas opciones pero si el usuario seleciona una en especial por decir digamos si su selectedvalue vale = "custom" debe mostar un formlario:

en su evento del combo SelectedValueChanged hago esto:

private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
Form1 frm = new Form1();

if (frm.ShowDialog() == DialogResult.OK)
{
//justo aqui es donde quiero que el combo cambie del texto que esta mostrando actualmente pero nose porque no cambia
comboBox1.text = "TEXTO CAMBIADO"
}
}


amigos entra al if pero no cambia el valor del text espero me puedan ayudar muchas gracias a todos.
  #2 (permalink)  
Antiguo 23/05/2008, 07:47
 
Fecha de Ingreso: mayo-2008
Mensajes: 24
Antigüedad: 16 años
Puntos: 1
Respuesta: pno puedo pintar un text en el combobox

Fijate en la propiedad DropDownStyle del combobox, si la tienes fijada en DropDownList, no es posible cambiar el texto (el usuario no puede entrar texto y no se puede cambiar a traves de la propiedad Text).

Si no quieres que el usuario pueda cambiar el texto y necesitas hacer lo que dices, se me ocurre que podrias hacer dos cosas:

Dejar el estilo como esta y cambiar la propiedad indicada en ValueMember del objeto mostrado.

Cambiar el estilo a DropDown y gestionar los eventos KeyPress o TextChanged para evitar la edicion por parte del usuario.
  #3 (permalink)  
Antiguo 23/05/2008, 11:22
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 1
De acuerdo Respuesta: pno puedo pintar un text en el combobox

[QUOTE=jovinorh;2416413]Dejar el estilo como esta y cambiar la propiedad indicada en ValueMember del objeto mostrado.QUOTE]

gracias x la ayuda el combobox ya pose la propiedad "DropDown" y evitar que el usuario teclee algo tambien ya lo hize poniedo e.handled = true en el evento keypress del combobox pero no me pinta un texto espeicifco en el combobox, quisera q pruebes ese ejmplito en tu pc y te des cuenta que no me pinta un texto, quisera lograr esto pero escapa de ms manos mas claro esta probando el ejmplo gracias..
  #4 (permalink)  
Antiguo 23/05/2008, 15:14
 
Fecha de Ingreso: mayo-2008
Mensajes: 24
Antigüedad: 16 años
Puntos: 1
Respuesta: pno puedo pintar un text en el combobox

Pues es cierto, no puedes cambiar el texto mostrado en ninguno de los eventos de cambio de elemento (SelectedIndexChanged, SelectValueChanged, SelectionChangeCommitted), porque aunque lo cambia, al volver del evento y redibujarlo, vuelve fijar el que le corresponde.

No se muy bien cual es el motivo de que quieras hacer esto, pero se me ocurren dos soluciones:

Si solo es un mensaje el que necesitas mostrar, añades un item mas al DataSource con la descripcion que quieras mostrar y cambiar el SelectedIndex del combo para mostrar ese mensaje.

La otra es la que te decia antes, cambiar el valor del elemento seleccionado a el texto que quieras mostrar. Suponiendo que el dataSource del combo es una DataTable:
Código:
 
private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
{
   Form1 frm = new Form1();

      if (frm.ShowDialog() == DialogResult.OK)
      {
          DataRowView row = (DataRowView)comboBox1.Items[comboBox1.SelectedIndex];
          row["Name"] = "Valor cambiado";
       }
}
Si haces esto ultimo asegurate de usar el evento que ves aqui arriba, si usas selectedValueChanged se metera en un bucle sin fin, con el consiguiente "stack overflow".
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:25.