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

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

因为我的应用程序具有列表框,其中所有播放的文件都在其中,所以我将所有此播放功能都放在“播放”按钮内,例如:我遍历了Listbox.Items.Count,并且在其中处理了这些文件。现在我想做些不同的事情,这是我的问题:

是定义处理此Play函数的类的通用方法吗,并且是每次添加到我的列表框的文件刚刚触发事件ControlAdded或在删除文件ControlRemoved并将该文件放入具有列表的我的类之后,从主窗体中定义该类的常见方法那拿着这个文件?

最佳答案

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


在Form类中有一个公共方法,该方法返回一个IEnumerable<string>(即文件列表),称为SelectedFiles()
为“播放”按钮设置一个公共event属性,该属性在用户单击“播放”按钮时引发,称为PlayClicked
创建一个“控制器”类,该类负责创建和显示表单。


您的控制器类将附加到PlayClicked事件。控制器的PlayClicked处理程序将调用表单的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/

10-12 16:07