C# 表单通信

标签 c# .net winforms ipc messaging

我有一个由 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/

相关文章:

.net - 无法安装使用 VS2010 构建的针对框架 3.5 的 MSI

c#如何使用图形路径制作平滑的圆弧区域

c# - StreamReader 在类中为 null

C# MYSQL - 使用组合框和文本框搜索过滤数据 GridView

.net - 如何创建支持多个项目(如列表框)的 Winform 用户控件

c# - xdocument save 保留标签内的空白

javascript - Visual Studio 2017 不显示 js 文件的折叠图标

.net - 帮助设置对 parent 的关注

c# - 将 Json 对象转换为实体

c# - yield 返回和返回