Pregunta

como estoy haciendo una pequeña aplicación de chat en vb.net (formulario de Windows), tengo problemas para el diseño de mi chatbox. Me gustaría que los mensajes de texto sean seleccionables para que el usuario pueda copiarlos (ctrl + v) pero no nombres de usuario que muestren quién envió el mensaje. ¿Qué controles de formulario debo usar para lograr esto y qué propiedades cambiar de él? Gracias. También tenga en cuenta los nombres de usuario y sus mensajes deben estar correctamente alineados.

¿Fue útil?

Solución

captura el ctrl + c y analiza el texto seleccionado para el nombre de usuario y bórralos

(tal vez pueda hacer que las imágenes de los nombres de usuario eviten la copia de texto estándar pegar)

Otros consejos

¿Ha pensado en usar un control DataGridView ?

Podría tener columnas separadas para los nombres de usuario y los mensajes y solo permitir la copia desde la columna del mensaje.

El control DataGridView es extremadamente poderoso en estos días y le permitiría personalizar la apariencia como quiera (ocultando líneas de cuadrícula para que se vea más como un cuadro de texto, por ejemplo).

Hay consejos y sugerencias por todas partes, pero esta página muestra cómo cambiar los colores de la cuadrícula.

Bueno, aquí hay una idea genial, pero no sé lo suficiente sobre sus requisitos para saber si funcionará para usted o no. En primer lugar, estoy pensando que, si estaba usando una aplicación de chat, me gustaría simplemente hacer clic en un mensaje y copiarlo en el portapapeles. Después de todo, no puedo pensar en otra cosa para la que deba hacer clic en un mensaje. Por lo tanto, sería genial si al pasar el mouse sobre un mensaje se resaltara y al hacer clic se copiara.

Si eso funciona para su situación, entonces la pregunta es cómo lograrlo. Estoy pensando que podría usar una etiqueta para mostrar el nombre de usuario que envió el mensaje, y un cuadro de texto de solo lectura para mostrar el mensaje en sí. Cada vez que se agrega un nuevo mensaje al chat, inserta una nueva etiqueta y un nuevo cuadro de texto (agregando estos controles a la colección de controles de la página). Probablemente debería envolver la etiqueta y el cuadro de texto en un div, para que pueda resaltar todo el div cuando se desplazan.

Ahora, ¿cómo hace que al hacer clic se copie el texto del mensaje en el portapapeles? Tomará algo de JavaScript. Si está utilizando una biblioteca de JavaScript, vea lo que ofrece. Si no, aquí hay algunos enlaces. El código Javascript necesitaría obtener solo el contenido del cuadro de texto, lo que puede hacer buscando la clase css correcta o la identificación correcta. Y luego, copie ese texto en el portapapeles como se describe en estos enlaces:

Javascript para copiar al portapapeles

Un segundo enlace sobre Javascript para copiar al portapapeles

Un tercer enlace sobre Javascript para copiar al portapapeles

Un cuarto enlace sobre Javascript para copiar al portapapeles

Por cierto, tal vez tengas el requisito de que los usuarios puedan seleccionar el texto de muchos mensajes. En ese caso, quizás haciendo clic en un mensaje " selecciona " y puedes tener múltiples seleccionados. Luego, hay un botón para "Copiar todos los mensajes seleccionados". Lo único que esto no maneja es seleccionar parte del texto de un mensaje. Por lo tanto, puede o no ser adecuado para sus necesidades.

Al seleccionar los dos cuadros de texto y validar el nombre de usuario y la contraseña para dos usuarios diferentes y tomar los cuadros de lista para ver los mensajes, en código abra una conexión de socket para chatear entre los usuarios.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top