想做一个C#关于界面切换的小功能

时间:2022-08-24 19:42:46
效果如下     当多个客户端链接到服务器时  在服务端选中不同的客户端让服务端的显示窗口显示对应的通讯内容
我现在只能做到让所有客户端发来的消息都显示在同一个窗口  该怎样改呢
显示窗口用的textbox控件  需要修改吗

8 个解决方案

#1


这个貌似不是什么问题吧,你的服务器端有个集合在维护当前已经链接的客户端吧,服务器端接收消息的地方做个判断只有在指定的客户端接收到消息时才刷新界面不就行了么

#2


贴出你的数据结构,从数据结构上可以看出服务器端所保存的每条信息中,哪些字段可以表示客户端、哪些字段可以表示通讯时间、哪些字段可以表示通讯内容.........没有数据结构,头脑中一定就是一团酱子,程序也就写不出来。

对于所谓“控件”问题,你应该先把它放在一边,先把交互界面的草图画出来,然后贴出来。界面设计要有创意,技术永远都要跟随设计,技术不可能高于设计。不要低级地从什么 TextBox 控件出发。

#3


引用 1 楼 Eagle_Tiger 的回复:
这个貌似不是什么问题吧,你的服务器端有个集合在维护当前已经链接的客户端吧,服务器端接收消息的地方做个判断只有在指定的客户端接收到消息时才刷新界面不就行了么

  后者我理解   但是前者我不明白   服务端接收不同的客户端数据怎么保存呢  还是说不需要保存  直接选中哪个  在接收的地方就读出来哪个  目前程序是这样写的  每有一个客户端链接上来  创建一个通信线程  发送就接收

#4


引用 3 楼 qq_29583345 的回复:
Quote: 引用 1 楼 Eagle_Tiger 的回复:

这个貌似不是什么问题吧,你的服务器端有个集合在维护当前已经链接的客户端吧,服务器端接收消息的地方做个判断只有在指定的客户端接收到消息时才刷新界面不就行了么

  后者我理解   但是前者我不明白   服务端接收不同的客户端数据怎么保存呢  还是说不需要保存  直接选中哪个  在接收的地方就读出来哪个  目前程序是这样写的  每有一个客户端链接上来  创建一个通信线程  发送就接收

要是我的话。每个数据加一个字段,保存客户端的唯一属性,比如id什么的。就能区分数据了。

#5


既然已经做到 做到让所有客户端发来的消息都显示在同一个窗口 了
那么在显示的时候加个过滤条件不就行了?

#6


根据客户端的身份信息,例如IP,端口,用户名等进行区分,然后显示特定用户的消息就可以了,如果需要显示历史信息,你可能需要进行记录

#7


引用 3 楼 qq_29583345 的回复:
  后者我理解   但是前者我不明白   服务端接收不同的客户端数据怎么保存呢  还是说不需要保存  直接选中哪个  在接收的地方就读出来哪个  目前程序是这样写的  每有一个客户端链接上来  创建一个通信线程  发送就接收


我这里所谓的“数据结构”是指你逻辑中的实体。如果拟定一个实体,你就会往里保存数据。你显示的数据来自哪里呢?

你要把这个问题反过来看。正因为你不把数据结构化,而是纠结什么 TextBox.Text 显示,没有中间的步骤,不能分层,所以无法“设计”流程。

你所谓“发送就接收”,那么你服务器端接收数据就要封装,然后当数据用到各处,你才能区分“1234”数据是哪一个客户端收到的“1234”数据、什么时间收到的........如果你不能在最底层的“数据”概念上稍微提高一步认识,就等于没上学。你现在要学会的就是这个设计步骤。

#8


所谓“服务端接收不同的客户端数据怎么保存呢  还是说不需要保存  直接选中哪个  在接收的地方就读出来哪个”这其实在你现在的层面上都是多余的纠结问题。

先不要怀疑,先在内存中设计一个实体数据集合,用来“保存数据”。把你接收数据、跟显示数据,分隔成两个不同的问题。

你先做到了所有的功能,才有能力提出所谓的“能不能不保存啊?”这样的问题。你在逻辑上完全满足了要求,才有权力提出性能或者空间的改进要求。如果连基本的正确性都做不到,就不要再以为自己的方法“更直接、更快、更方便”。如果自己的逻辑连基本的流程都做不到,就不要去想当然地去否定人家“可以”达到目的的任何流程。

不要过早纠结你没有能力纠结的东西。其实做一个事情很容易,而往往是因为你想得太多了,什么都不深入下去,所以你根本没有精力去真正实践一个东西。

#1


这个貌似不是什么问题吧,你的服务器端有个集合在维护当前已经链接的客户端吧,服务器端接收消息的地方做个判断只有在指定的客户端接收到消息时才刷新界面不就行了么

#2


贴出你的数据结构,从数据结构上可以看出服务器端所保存的每条信息中,哪些字段可以表示客户端、哪些字段可以表示通讯时间、哪些字段可以表示通讯内容.........没有数据结构,头脑中一定就是一团酱子,程序也就写不出来。

对于所谓“控件”问题,你应该先把它放在一边,先把交互界面的草图画出来,然后贴出来。界面设计要有创意,技术永远都要跟随设计,技术不可能高于设计。不要低级地从什么 TextBox 控件出发。

#3


引用 1 楼 Eagle_Tiger 的回复:
这个貌似不是什么问题吧,你的服务器端有个集合在维护当前已经链接的客户端吧,服务器端接收消息的地方做个判断只有在指定的客户端接收到消息时才刷新界面不就行了么

  后者我理解   但是前者我不明白   服务端接收不同的客户端数据怎么保存呢  还是说不需要保存  直接选中哪个  在接收的地方就读出来哪个  目前程序是这样写的  每有一个客户端链接上来  创建一个通信线程  发送就接收

#4


引用 3 楼 qq_29583345 的回复:
Quote: 引用 1 楼 Eagle_Tiger 的回复:

这个貌似不是什么问题吧,你的服务器端有个集合在维护当前已经链接的客户端吧,服务器端接收消息的地方做个判断只有在指定的客户端接收到消息时才刷新界面不就行了么

  后者我理解   但是前者我不明白   服务端接收不同的客户端数据怎么保存呢  还是说不需要保存  直接选中哪个  在接收的地方就读出来哪个  目前程序是这样写的  每有一个客户端链接上来  创建一个通信线程  发送就接收

要是我的话。每个数据加一个字段,保存客户端的唯一属性,比如id什么的。就能区分数据了。

#5


既然已经做到 做到让所有客户端发来的消息都显示在同一个窗口 了
那么在显示的时候加个过滤条件不就行了?

#6


根据客户端的身份信息,例如IP,端口,用户名等进行区分,然后显示特定用户的消息就可以了,如果需要显示历史信息,你可能需要进行记录

#7


引用 3 楼 qq_29583345 的回复:
  后者我理解   但是前者我不明白   服务端接收不同的客户端数据怎么保存呢  还是说不需要保存  直接选中哪个  在接收的地方就读出来哪个  目前程序是这样写的  每有一个客户端链接上来  创建一个通信线程  发送就接收


我这里所谓的“数据结构”是指你逻辑中的实体。如果拟定一个实体,你就会往里保存数据。你显示的数据来自哪里呢?

你要把这个问题反过来看。正因为你不把数据结构化,而是纠结什么 TextBox.Text 显示,没有中间的步骤,不能分层,所以无法“设计”流程。

你所谓“发送就接收”,那么你服务器端接收数据就要封装,然后当数据用到各处,你才能区分“1234”数据是哪一个客户端收到的“1234”数据、什么时间收到的........如果你不能在最底层的“数据”概念上稍微提高一步认识,就等于没上学。你现在要学会的就是这个设计步骤。

#8


所谓“服务端接收不同的客户端数据怎么保存呢  还是说不需要保存  直接选中哪个  在接收的地方就读出来哪个”这其实在你现在的层面上都是多余的纠结问题。

先不要怀疑,先在内存中设计一个实体数据集合,用来“保存数据”。把你接收数据、跟显示数据,分隔成两个不同的问题。

你先做到了所有的功能,才有能力提出所谓的“能不能不保存啊?”这样的问题。你在逻辑上完全满足了要求,才有权力提出性能或者空间的改进要求。如果连基本的正确性都做不到,就不要再以为自己的方法“更直接、更快、更方便”。如果自己的逻辑连基本的流程都做不到,就不要去想当然地去否定人家“可以”达到目的的任何流程。

不要过早纠结你没有能力纠结的东西。其实做一个事情很容易,而往往是因为你想得太多了,什么都不深入下去,所以你根本没有精力去真正实践一个东西。