当我在 vb.net(windows 窗体)中做一个小型聊天应用程序时,我的聊天框设计有问题。我希望可以选择短信,以便用户可以复制(ctrl+v)它,但不能复制显示谁发送消息的用户名。我应该使用哪些表单控件来完成此操作以及从中更改哪些属性?谢谢你。另请记住,用户名及其消息必须正确对齐。
4 回答
抓住 ctrl+c 并解析用户名的选定文本并删除它们
(也许您可以制作用户名图像以防止标准文本复制粘贴)
您是否考虑过使用DataGridView控件?
您可以为用户名和消息设置单独的列,并且只允许从消息列复制。
如今,DataGridView 控件非常强大,可以让您根据需要自定义外观(例如,隐藏网格线使其看起来更像文本框)。
There are tips and hints all over the place, but this page shows how to change gridline colours.
好吧,这是一个非常酷的想法,但我对您的要求知之甚少,无法知道它是否适合您。我首先想到的是,如果我使用的是聊天应用程序,我想简单地单击一条消息并将其复制到剪贴板中。毕竟,我想不出还有什么需要点击消息的。因此,如果将鼠标悬停在一条消息上会使其突出显示,然后单击会导致它被复制,那就太好了。
如果这适用于您的情况,那么问题是如何实现这一目标。我认为您可以使用标签来显示发送消息的用户名,并使用只读文本框来显示消息本身。每次向聊天中添加新消息时,您都会插入一个新标签和一个新文本框(通过将这些控件添加到页面的控件集合中)。可能应该将标签和文本框包装在一个 div 中,以便在它们悬停时突出显示整个 div。
现在,如何使单击导致消息文本被复制到剪贴板?这将需要一些 JavaScript。如果您使用的是 JavaScript 库,请查看它提供的内容。如果没有,这里有一些链接。Javascript 代码只需要获取文本框的内容,它可以通过查找正确的 css 类或正确的 id 来完成。然后,按照这些链接中的说明将该文本复制到剪贴板:
顺便说一句,也许您有要求用户应该能够选择许多消息的文本。在这种情况下,也许单击一条消息会“选择”它,并且您可以选择多个。然后,有一个“复制所有选定的消息”按钮。唯一不能处理的是选择消息文本的一部分。因此,它可能适合也可能不适合您的需求。
By selecting the two text boxes and validating the username and password for two different users and take the list boxes for seeing the messages, in code open a socket connection to chat between the users.