使用命令行参数自动化WinForms应用程序的最佳方法是什么?

时间:2012-03-07 07:52:18

标签: c# winforms automation command-line-arguments

我编写了一个小型WinForms工具,其中包含一些文本框,单选按钮,复选框和一个启动按钮。所以你输入你的输入,点击开始就可以了。

现在我想实现让用户通过允许传递命令行参数来进行一些批处理。

过去我会这样做:

  • 解析命令行参数并填充Windows.OnLoad事件中的文本框,单选按钮和复选框
  • 在Form.onLoad事件中启用计时器,以便在100分钟后启动
  • 当计时器触发时,禁用计时器并让它点击GUI的开始按钮。

这很有效,但我想知道更优雅的方法。 你会如何解决这个问题?

编辑: 我想总是显示表单,因为它有一个带有进度条的Backgroundworker。

3 个答案:

答案 0 :(得分:1)

听起来你的函数直接从表单中读取处理。让该函数接受所有数据作为参数,然后在提交表单时,将数据收集起来然后传递给函数,这是非常清晰的。

以这种方式工作将使您能够从程序的任何部分调用该函数,例如在解析传递给程序的参数时。

不需要定时器,也不需要涉及批量的UI。正如Treb所提到的,对于批处理,您可以选择永远不会显示表单(甚至根本不显示UI)

答案 1 :(得分:1)

如果使用UI模式(如MVP和MVC),则可以将批处理逻辑外部化为基于非UI的类。如果您将控制台想象为另一种UI类型,那么您可以在现有业务逻辑的基础上构建它。

答案 2 :(得分:0)

为什么您的用户界面与您的业务混在一起?您应该有一个业务部分和一个UI部分。 UI和CLI应该只是作为业务的接口。

这是最干净的方法。

关于您的进度条,只需考虑一个系统,您可以从您的业务中读取%的值,这表示完成的工作百分比。 不是那么辛苦