2010-03-27 36 views
0

我已经编写了一个多线程服务器,它使用tcplistener和一个控制输入和输出的客户端处理程序类。我也有一个GUI聊天客户端。聊天客户端工作正常,服务器的控制台版本也能正常工作。c#GUI从另一个类更改列表框

我在部分(?)Form类中有一个start()方法,当我单击按钮时,它从一个新线程运行,启动TCP Listener并循环并接受套接字请求。对于每个请求,都会创建一个新的ClientHandler对象,并且在用于新处理程序线程之前将套接字传递给此对象。

ClientHandler是一个与表单不同的类,我在将ClientHandler类中的数据写入Form类的Listbox时遇到了实际问题。我已经尝试了几种不同的方法来完成这个任务,但它们都没有工作,因为它们涉及在ClientHandler中创建一个新的表单类。

任何帮助或建议,我应该阅读帮助我会非常感激。

+0

关于您的问号部分:表单是部分的,以便您的用户代码和设计器代码可以存储在不同的文件中。这使得开发人员不太可能修改设计器代码并弄乱设计器,并且使用户代码文件变得更简单。 – 2010-03-27 11:55:15

+0

这很有道理。谢谢。 – SlowForce 2010-03-27 11:57:00

回答

0

OK问题就迎刃而解了:

我通过ServerGUI到ClientHandler的阶级是这样的:

ClientHandler handler = new ClientHandler(clientSocket, "Client " + id.ToString(),this); 

,然后我可以做我想做的事情。几乎没有花了我2个小时!

+1

您可能要考虑的一件事是您描述的设计是让您的ClientHandler负责更新GUI。如果要更改设计,以便ClientHandler提供事件通知更改并且GUI消耗事件,那么您将可以灵活地在将来更改GUI而不影响ClientHandler代码。 – 2010-03-27 13:13:15

相关问题