【问题标题】:System.Windows.Forms.SendKeys.SendWait("{ENTER}") Causing error while runningSystem.Windows.Forms.SendKeys.SendWait("{ENTER}") 导致运行时出错
【发布时间】:2016-08-12 08:41:20
【问题描述】:

我正在尝试以 UI 和命令行的形式运行 WPF 应用程序。在命令行模式下,我在控制台上打印一些文本,然后我使用下面给出的 sendKeys 退出控制台控制

Console.WriteLine("Printing Something here");

System.Windows.Forms.SendKeys.SendWait("{ENTER}");

FreeConsole();

但是带有 SendKeys 的行在运行时会抛出错误。 在命令行模式下,应用程序崩溃。 但是,在 Visual Studio 上进行调试时,我在消息框上看到了以下消息

代码运行时不允许更改

请提供任何提示,为什么会出现这个抛出错误。以便我可以进行必要的更改。

提前致谢 萨加尔

【问题讨论】:

  • “代码运行时不允许更改” 似乎是由 Visual Studio 本身抛出的。可能是按键被发送到您在选项卡中打开代码的 VS 窗口。如果它向它发送一个 ENTER 按键,那么 VS 将在您尝试在运行时修改代码时解释它。
  • 有没有办法将 Enter 键发送到控制台窗口?

标签: c# .net wpf visual-studio mvvm


【解决方案1】:

正在调试的命令提示符程序没有关注 UI,CMD 应用程序正在向 Visual Studio 发送“Enter”,这就是 VS 抱怨的原因。从历史上看,SendKeys 和 WPF 之间的关系很糟糕,通常不能很好地相互配合。如果您正在寻找“测试”基于 WPF 的 UI,我会寻找 wpf UI 测试自动化框架。它们将与 UI 配合得非常好,并允许您准确地编写计划执行的脚本,甚至记录结果。

【讨论】:

  • 感谢凯文的回答。我在这里要做的是在 CMD 应用程序上显示一些消息。因为我需要根据需要使 WPF 应用程序作为 UI 和命令行运行。在命令行运行期间,一旦显示一些消息,我需要退出命令提示符
  • 那么遵循更 NTier 的编码风格是否有意义?使用该库创建数据访问库和服务库以及 CMD 应用程序和 WPF 应用程序接口,而不是走这条路?我现在也有类似的情况,我必须创建一个 web 和 wpf 应用程序,所以这样做真的很有意义。我可以通过服务层管理日志记录和服务调用,而且效果很好。
猜你喜欢
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多