我有一个由 3 种形式组成的 C# 应用程序:
1: Battleship Game GUI 2: Network GUI (does client/server connections) 3: Chat GUI
Form 1 首先加载。当用户选择 setup network
时,将显示 Form 2。
当用户选择发送聊天或收到聊天时,会显示聊天。
我希望 Form 2 处理所有消息并将相关消息传递给相关 GUI 以进一步解码消息。
我仍处于开发的早期阶段。目前我是trying to use delegates to communicate between the forms .
这是最好的方法吗?关于应用程序组件相互发送消息的最佳做法是什么?
最佳答案
ikurts,这绝对不是好的做法。您的 UI,无论有多少,都应该与通信完全无关。你应该:
- 阅读 .Net 中的模型/ View / Controller ,了解构建像您这样的项目的好方法
- 阅读有关使用线程进行通信的内容,应该很简单
听起来您想在设置您的应用时遵循最佳做法。我想你会得到很多关于这个问题的反馈,所有这些听起来都是这样的。帮自己一个忙并遵循它。远离表单中的通信逻辑!!!
一些想法:
我不确定为什么要将其分成三个屏幕,而两个屏幕看起来合乎逻辑:1) 网络设置对话框 2) 可以容纳战舰 UI 和聊天 UI 的游戏对话框。此配置还将简化您的结构,因为只有一个屏幕,游戏/聊天屏幕需要更新。设置对话框就是这样。
这是一个 threaded chat application on CodeProject 的例子这将很好地作为一个代码库来启动。我想您的战舰移动将只是指定棋盘命中率的“特殊”聊天消息。
另外,这里有一个 network enabled tic tac toe game 的例子这可能会产生有关开发客户端/服务器游戏的线索。
不要回避看似困难的事情!我的建议是首先编写一个没有 UI 的聊天/通信客户端,也许只有控制台输出。然后添加一个屏幕,您会发现您不必将窗口与网络内容结合起来。
祝你好运!
更多链接:
这是一个不错的 discussion about MVC/MVP这可能会启发您的架构。 和 here's another ...从不同的角度。
关于C# 表单通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1971959/