我用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 Controller或Model View Presenter体系结构。
关于c# - 设计模式/ListBox.Items.Count,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16688980/