【问题标题】:Application.Run(form) how to receive messages from the "form" c#Application.Run(form) 如何从“表单”c# 接收消息
【发布时间】:2015-06-11 18:03:45
【问题描述】:

我一直在理解如何在使用 Application.Run(Form) 启动消息循环后从内部应用接收回数据。

我的问题是,如何检索消息、对象、字符串等?基本上,我希望我的内部应用程序将一个对象发送回主 winform,以便能够利用主表单代码执行 USB 打印。这可能吗?如果有人可以帮助我提供一个非常简单的字符串 printText = "hello there" 示例;并将其抓取到主要的winform上进行处理? 抱歉,我知道这不是最漂亮的问题,但我应该可以从那里开始。

我的 winform 应用程序正在执行一些 windows CE 的遗留代码,我在其中处理的数据需要能够打印到 USB 打印机。

【问题讨论】:

  • 表单是向用户展示数据的一种方式,不要把它变成一个全球服务系统。为此制作服务类和单例。
  • 好的,没问题。但我仍然和以前一样在同一个地方。如何从子窗体中取回数据以对其进行处理?

标签: c# winforms .net-3.5


【解决方案1】:

我假设当您说内部应用程序时,您的意思是子窗体。所以最好的办法是在子窗体上创建事件,这个事件将由主窗体处理。因此,每当您需要主表单中的一些数据时,您的子表单就可以在事件参数中传递这些数据。现在您的主窗体将处理此事件以及处理此数据的任何内容。

在主窗体中

var childForm=new ChildForm();
childForm.DataGenerated+=DataHandler;
childForm.Show();

private void DataHandler(object data)
{
    //do something with data
}

【讨论】:

  • 抱歉回复晚了。我确实最终发现它可以像那样工作。唯一的问题是如果您在命令参数中传递大量数据。所以对于简单的事情它可以工作,但如果你有一个大字符串它可能会打嗝。我们在这里工作时有一个不同的解决方案,我们能够从我们所谓的状态表中调用另一个类,它实际上允许我从一个单独的构建修订版 (.net3.5) 中的一个单独的项目中调用它,这实际上是有效的我们需要做的。
猜你喜欢
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多