Какие элементы управления формы использовать для чата (.net)

StackOverflow https://stackoverflow.com/questions/642918

  •  22-07-2019
  •  | 
  •  

Вопрос

Поскольку я делаю небольшое приложение для чата на vb.net (форма Windows), у меня возникла проблема с дизайном моего чата. Я хотел бы, чтобы текстовые сообщения можно было выбирать, чтобы пользователь мог копировать (Ctrl + V), но не имена пользователей, которые отображают, кто отправил сообщение. Какие элементы управления формой я должен использовать для достижения этой цели и какие свойства нужно изменить? Спасибо. Также имейте в виду, что имена пользователей и их сообщения должны быть правильно выровнены.

Это было полезно?

Решение

поймать ctrl + c, проанализировать выделенный текст по имени пользователя и удалить их

(возможно, вы можете сделать изображения для имен пользователей, что помешает стандартной вставке текстового копирования)

Другие советы

Задумывались ли вы об использовании элемента управления DataGridView ?

Вы можете иметь отдельные столбцы для имен пользователей и сообщений и разрешать копирование только из столбца сообщений.

Элемент управления DataGridView очень мощен в наши дни и позволит вам настроить внешний вид так, как вы хотите (например, скрыть линии сетки, чтобы он выглядел как текстовое поле).

Везде есть советы и подсказки, но на этой странице показывает, как изменить цвета линии сетки.

Хорошо, вот довольно крутая идея, но я недостаточно знаю о ваших требованиях, чтобы знать, сработает ли это для вас или нет. Прежде всего, я думаю, что если бы я использовал приложение чата, я бы просто хотел щелкнуть сообщение и скопировать его в буфер обмена. В конце концов, я не могу думать ни о чем другом, для чего мне нужно нажать на сообщение. Поэтому было бы неплохо, если бы при наведении курсора на сообщение оно было выделено, а при щелчке оно было скопировано.

Если это работает для вашей ситуации, тогда вопрос в том, как этого добиться. Я думаю, что вы можете использовать метку, чтобы показать имя пользователя, который отправил сообщение, и текстовое поле только для чтения, чтобы показать само сообщение. Каждый раз, когда новое сообщение добавляется в чат, вы вставляете новую метку и новое текстовое поле (добавляя эти элементы управления в коллекцию элементов управления на странице). Вероятно, следует обернуть метку и текстовое поле в элемент div, чтобы вы могли выделить весь элемент div при наведении курсора.

Теперь, как вы делаете клики, чтобы текст сообщения копировался в буфер обмена? Это займет немного JavaScript. Если вы используете библиотеку JavaScript, посмотрите, что она предлагает. Если нет, вот несколько ссылок. Код Javascript должен был бы получить только содержимое текстового поля, что он может сделать, ища правильный класс CSS или правильные идентификаторы. Затем скопируйте этот текст в буфер обмена, как описано в следующих ссылках:

Javascript для копирования в буфер обмена

Вторая ссылка о Javascript для копирования в буфер обмена

3-я ссылка на Javascript для копирования в буфер обмена р>

4-я ссылка на Javascript для копирования в буфер обмена

Кстати, может быть, у вас есть требование, чтобы пользователи могли выбирать текст из многих сообщений. В этом случае, возможно, нажав на сообщение «выберет» это, и вы можете выбрать несколько магазинов. Затем есть кнопка «Копировать все выбранные сообщения». Единственное, что не обрабатывается, - это выделение части текста сообщения. Так что это может или не может быть правильным для ваших нужд.

Выбрав два текстовых поля и проверив имя пользователя и пароль для двух разных пользователей и воспользовавшись списками для просмотра сообщений, в коде откройте сокетное соединение для чата между пользователями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top