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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Alinear textos derecha e izquierda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Alinear textos derecha e izquierda  (Leído 7,309 veces)
rigorvzla

Desconectado Desconectado

Mensajes: 221


Ver Perfil
Alinear textos derecha e izquierda
« en: 9 Agosto 2021, 16:21 pm »

Hola amigos, estoy aqui con un problema que no se como resolver, espero alguien pueda ayudarme.

Quiero en un cuadro de texto enviar  textos, la cosa es:
1-No se si estoy usando el control correcto para esto (TextBox) actualmente
2-quiero escribir y que el texto enviado se alinie a la izquierda
3-quiero que cuando envie texto de otro metodo se alinie en el mismo cuadro pero a la derecha

como puedo lograr esto? se que unir el texto al mismo control se hace con Append, mas no se como alinear una los mensajes que envio a mi conveniencia.

Espero puedan darme ayuda , gracias de antemano


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Alinear textos derecha e izquierda
« Respuesta #1 en: 9 Agosto 2021, 16:52 pm »

El textbox tiene su propiedad alineacion...
Ahora bien, me parece que tu quieres mantener una alineación 'múltiple' al mismo tiempo, tal cual aparece en los chats...

No has aclarado como debe aparecer verticalmente, es decir si el 'append' se realiza debajo de lo previo (quedando último mensaje abajo) o encima d elo previo (quedando lo último arriba dle todo).
Normalmente queda abajo, pero requiere scroll por parte del usuario. El caso es que esto debe queda claro antes de nada para desarrollar un sistema y no el otro.

Esto se puede hacer de varias maneras:
 - Mantener 2 controles, uno alineado a la derecha y otro a la izquierda, ambos deberían mantener un aspecto transparente de modo que uno no tape al otro, si no que los textos se solapen como si estuvieran en la misma área. La complicación aquí es mantener la verticalidad , un mensaje debado de otro. Esto se logra fácil y chapuceramente manteniendo sendos controles otro oculto, donde se pega primero y se contabilida las líneas que ocupa, luego al texto a pegas hay que endosarle dichos saltos de línea (tantos como líneas).

 - Mantener 1 solo control. Eliges una alineación (por ejemplo izquierda), cuando pegas el texto a izquierda no tienes nada más que hacer, pero cuando pegas el texto alineado a la derecha, debes calcular el espacio a añadir a la izquierda. Como consejo, se puede simplificar los cálculos si eliges una fuente monoespaciada (todos los caracteres tienen le mismo ancho), luego sabiendo el ancho del textbox, sabes cuantos caracteres caben en una línea. A la noche si estás interesado y saco un tiempito te pongo un sencillo pseudocódigo para esto...

 - Mantener 2 controles ocultos cada uno con su alineación. El textbox donde se ve la imagen en realidad sería ahora un control de imagen. Tú pegas el texto en cada control oculto (que además tienen el mismo ancho que el control de imagen), y luego recortas (copias) el gráfico generado en el textbox de turno, y lo pegas en el control de imagen. Si tiene un fondo este control el pegado debe ser con transparencias y para ello el fondo de los textbox deben ser del color a enmascarar en el control de imagen.

En cualquier caso, date cuenta que si el control donde se expone al usuario es modificable (el menos en ancho), cada vez que se modifique dicho ancho requiere volver a renderizar todo su contenido, por lo que para que sea efectivo, todo el texto debe irse guardando en un fichero, diferenciando lo que se alinea a un lado de lo que se alinea al otro...

Ejemplo
Como se guarda en el fichero:
Pedro:
Hola Juan, que harás esta noche?. Podríamos ir al cine...
Juan:
Hola Pedro, tengo toda la noche ocupada

Como se ve en la interfaz:

--------------------------------------------
Pedro:
Hola Juan, que harás esta noche?. Podríamos 
ir al cine...
                                       Juan:
                Hola Pedro, tengo toda la no
                                 che ocupada
--------------------------------------------


'Pedro:' y 'Juan:' (+ solo el salto de línea), hacen en el ejemplo el identificador de alineación en el fichero...


« Última modificación: 9 Agosto 2021, 16:55 pm por Serapis » En línea

rigorvzla

Desconectado Desconectado

Mensajes: 221


Ver Perfil
Re: Alinear textos derecha e izquierda
« Respuesta #2 en: 9 Agosto 2021, 17:38 pm »

en efecto es justo lo q quiero hacer, lo intente con dos controles como mencionas, solo que lo vi muy poco practico , ya que al llegar al limite del textbox salen ambos scroll bar y daña todo la estetica, mas el ejemplo ultimo que me dejastes esta justo y suficiente para mi.

y algo extra seria , poner dos colores de fuentes distintas, ya que son dos y no mas "personas", me gustaria que se identificara, pero al intentarlo entonces solo queda de uno u otro color pero no por lineas
« Última modificación: 9 Agosto 2021, 17:40 pm por rigorvzla » En línea

ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: Alinear textos derecha e izquierda
« Respuesta #3 en: 16 Agosto 2021, 00:13 am »

1-No se si estoy usando el control correcto para esto (TextBox) actualmente

No vas a poder lograr mucho con un TextBox "standard". Para esto necesitas un RichTextbox y el atributo SelectionAlignment, a traves del cual puedes especificar el tipo de alineacion horizontal que deseas hacer en una selection



Con 1 RichTextbox y 2 Textbox (imitando inputs por separado) en el Form:

Código
  1. private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
  2. {
  3.    if (e.KeyChar == (char)Keys.Return)
  4.    {
  5.        richTextBox1.SelectionAlignment = HorizontalAlignment.Left;
  6.        richTextBox1.SelectionBackColor = Color.DarkCyan;
  7.        richTextBox1.SelectedText = textBox1.Text + Environment.NewLine;
  8.  
  9.        textBox1.Clear();
  10.        e.Handled = true;
  11.    }
  12. }
  13.  
  14. private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
  15. {
  16.    if (e.KeyChar == (char)Keys.Return)
  17.    {
  18.        richTextBox1.SelectionAlignment = HorizontalAlignment.Right;
  19.        richTextBox1.SelectionBackColor = Color.DarkGray;
  20.        richTextBox1.SelectedText = textBox2.Text + Environment.NewLine;
  21.  
  22.        textBox2.Clear();
  23.        e.Handled = true;
  24.    }
  25. }

Saludos
En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Alinear NUEVOS iconos del escritorio a la derecha o abajo a la izquierda?
Windows
SuperDraco 3 7,645 Último mensaje 5 Junio 2011, 16:25 pm
por Randomize
Guardar nulos a izquierda y no ha derecha.
Programación C/C++
Xedrox 6 3,828 Último mensaje 27 Diciembre 2012, 01:23 am
por naderST
Alinear texto a la derecha
Programación C/C++
Sothu 4 4,681 Último mensaje 12 Diciembre 2015, 19:38 pm
por fary
Crear un editor de texto de derecha a izquierda
Dudas Generales
Padrón Rocha 5 5,164 Último mensaje 19 Agosto 2017, 20:32 pm
por Orubatosu
Como leo estos Bits de derecha a izquierda o izquierda a derecha ?
Programación C/C++
FFernandez 1 4,853 Último mensaje 8 Octubre 2021, 00:12 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines