none
Saber si en una cadena existe un retorno de carro - tecla ENTER - RRS feed

  • Pregunta

  • Hola

    Necesito ver si me pueden ayudar con este asunto:

    Tengo una aplicación en la cual lee una cadena de texto, una vez entrada toda la cadena, la aplicación la va leyendo para encontrar ciertas frases que son necesarias para ella.

    Lo que no he podido hacer es que cuando en la cadena haya un retorno de carro - tecla ENTER - esta lea el código -13-  y me informe de que es un retorno de carro

    Este es mi codigo

     if (textBox1.Text.Substring(i, 1) == " " || Encoding.ASCII.GetBytes(textBox1.Text)[0] ==13)

    Estoy usando StringBuilder para ello

    Alguien puede, si es tan amable, de orientarme a como hacerlo en este asunto ?

    Se los agradezco de antemano 

    sábado, 21 de julio de 2018 20:41

Respuestas

  • Hola.

    Gracias a todos por su atención

    Lo pude hacer con la instrucción 

    if (Encoding.ASCII.GetBytes(textBox1.Text)[i].ToString() == "13")

    Asi puedo saber si hay tecla ENTER y su posición exacta

    Les agradezco su valiosa cooperación

    Voy a cerrar el hilo

    Gracias

    • Marcado como respuesta rodolopa miércoles, 25 de julio de 2018 23:47
    miércoles, 25 de julio de 2018 23:47

Todas las respuestas

  • Ese seria un ejemplo de como capturar  el valor asccii numero 13  ya que el textbox tiene un comportamiento definido por defecto que es si no tiene activado el multilinea reproduce un sonido como reacción a ese valor introducido por el teclado pero este no guarda ese valor en su propiedad text, también lo mismo con que tenga activado el multilinea  hace el pase a la otra linea pero este no se guarda deberías usar el evento KeyDown del textbox para  captura ese valor especial del textbox... ahora también podrías activar el multilinea en el y utilizar el valor  '\n' que equivale a nueva linea y se produce cuando el textbox lee valor ascii 13... que podría revisar los salto de linea como el valor 13 que es el que hace que se active el salto de linea.

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyValue==13)
                {
                       /// accion o proceso
                }
            }


    domingo, 22 de julio de 2018 0:52
  • Gracias por tu repuesta David

    Lo he probado con '\r' entrando a mano la cadena, y si responde.

    El caso es que si el usuario entra la cadena con Copiar - Pegar, cuando la cadena es pegada, ahí no me reconoce el  

    ENTER

    Alguna sugerencia ?

    Te agradezco

    domingo, 22 de julio de 2018 2:48
  • Además del '\r', comprueba también el '\n'. Dependiendo de desde dónde se esté copiando y pegando, puede ser que los retornos de carro lleguen únicamente con '\n' y no traigan el '\r'.
    domingo, 22 de julio de 2018 5:41
    Moderador
  • Gracias Alberto, voy a probarlo y te viso

    Buen día

    domingo, 22 de julio de 2018 21:23
  • Hola.

    Gracias a todos por su atención

    Lo pude hacer con la instrucción 

    if (Encoding.ASCII.GetBytes(textBox1.Text)[i].ToString() == "13")

    Asi puedo saber si hay tecla ENTER y su posición exacta

    Les agradezco su valiosa cooperación

    Voy a cerrar el hilo

    Gracias

    • Marcado como respuesta rodolopa miércoles, 25 de julio de 2018 23:47
    miércoles, 25 de julio de 2018 23:47
  • if (Encoding.ASCII.GetBytes(textBox1.Text)[i].ToString() == "13")

    No hay necesidad de convertir a string para realizar la comparación. Los números también pueden compararse:

    if (Encoding.ASCII.GetBytes(textBox1.Text)[i] == 13)

    jueves, 26 de julio de 2018 5:29
    Moderador