none
TextBox usar Ctrl-BackSpace para borrar una palabra RRS feed

  • Pregunta

  • Estoy haciendo un control textbox en el cual quiero que cuando pulse las teclas crtl-backspace me borre la palabra en vez de la letra anterior. He puesto la propiedad ShortcutsEnabled  a true y no me funciona.
    Que puede ser?
    miércoles, 15 de julio de 2009 7:40

Respuestas

  • Yo utilizaraia el evento KeyDown, una implementacion puede ser parecida a esta

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
       
    if ((e.KeyCode == Keys.Back) && e.Control)
       
    {
            e
    .SuppressKeyPress = true;
           
    int selStart = textBox1.SelectionStart;
           
    while (selStart > 0 && textBox1.Text.Substring(selStart - 1, 1) == " ")
           
    {
                selStart
    --;
           
    }
           
    int prevSpacePos = -1;
           
    if (selStart != 0)
           
    {
                prevSpacePos
    = textBox1.Text.LastIndexOf(' ', selStart - 1);
           
    }
            textBox1
    .Select(prevSpacePos + 1, textBox1.SelectionStart - prevSpacePos - 1);
            textBox1
    .SelectedText = "";
       
    }
    }

    Oscar Avarez Guerras - Arquitecto Software en I3B (I+D+I) Blog:http://geeks.ms/blogs/oalvarez Por favor marca como respuesta si te ha ayudado esta respuesta
    • Marcado como respuesta fjlarrea miércoles, 15 de julio de 2009 9:20
    miércoles, 15 de julio de 2009 8:03

Todas las respuestas

  • Yo utilizaraia el evento KeyDown, una implementacion puede ser parecida a esta

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
       
    if ((e.KeyCode == Keys.Back) && e.Control)
       
    {
            e
    .SuppressKeyPress = true;
           
    int selStart = textBox1.SelectionStart;
           
    while (selStart > 0 && textBox1.Text.Substring(selStart - 1, 1) == " ")
           
    {
                selStart
    --;
           
    }
           
    int prevSpacePos = -1;
           
    if (selStart != 0)
           
    {
                prevSpacePos
    = textBox1.Text.LastIndexOf(' ', selStart - 1);
           
    }
            textBox1
    .Select(prevSpacePos + 1, textBox1.SelectionStart - prevSpacePos - 1);
            textBox1
    .SelectedText = "";
       
    }
    }

    Oscar Avarez Guerras - Arquitecto Software en I3B (I+D+I) Blog:http://geeks.ms/blogs/oalvarez Por favor marca como respuesta si te ha ayudado esta respuesta
    • Marcado como respuesta fjlarrea miércoles, 15 de julio de 2009 9:20
    miércoles, 15 de julio de 2009 8:03
  • Muchas gracias, lo he implemntado como has dicho
    miércoles, 15 de julio de 2009 9:21