gpt4 book ai didi

c# - 设计模式/ListBox.Items.Count

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:53 25 4
gpt4 key购买 nike

我用 Pcapdot.Net DLL 构建了一个 Winform 应用程序,它获取 Pcap 文件并将所有文件包播放到机器网卡中。

最近我注意到我所有的主要形式(所有按钮点击\事件)都是一团糟,我把所有的方法都放在这些函数中,代码看起来很复杂而且很难理解所以我开始重新排列这段代码.

因为我的应用程序有列表框,所有播放的文件都在里面,所以我把所有这个播放功能都放在播放按钮中,例如:我在我的 Listbox.Items.Count 上循环,我在里面处理这些文件。现在我想做一些不同的事情,这是我的问题:

这是定义处理这个 Play 函数的类的常用方法吗?每次添加到我的列表框的文件只是触发事件 ControlAdded 或在删除文件 ControlRemoved 并将这些文件放入我的类(class)中,类(class)中有包含该文件的列表?

最佳答案

我认为您最好像这样重新安排它(将业务逻辑与您的 UI 分开):

  • 在您的 Form 类中有一个返回 IEnumerable<string> 的公共(public)方法这是文件列表,名称类似于 SelectedFiles() .

  • 公开event当用户单击“播放”按钮时引发“播放”按钮的属性,称为 PlayClicked .

  • 创建一个负责创建和显示表单的“ Controller ”类。

您的 Controller 类将附加到 PlayClicked事件。 PlayClicked 的 Controller 处理程序会调用表单的 SelectedFiles()方法来获取文件列表,然后执行它需要执行的任何操作。

我什至会考虑将所选文件的处理代码包装到另一个名为 SelectedFileHandler 的类中并将处理文件的逻辑放入其中,也许在一个名为 HandleFiles(IEnumerable<string> files) 的方法中.

然后“ Controller ”类仍然会连接到 PlayClicked事件,但它会使用 SelectedFileHandler.HandleFiles()处理文件的方法。

这对你来说有意义吗?我可能误解了你在找什么。

我基本上是说你应该使用 Model View ControllerModel View Presenter架构。

关于c# - 设计模式/ListBox.Items.Count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16688980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com