不同过程中表格之间的沟通

时间:2012-12-11 17:12:37

标签: c# winforms wcf

我正在尝试执行以下操作:

我有一个带有textBox的form1和以下方法:

public void ChangeText()
{
    textBox.Text = "A";
}

应用程序运行Form1类的形式 - 我们将其称为mainForm。 该主窗体启动另一个进程,创建另一种形式的Form1 - 让我们称之为childForm。

我现在想要点击mainForm上的一个按钮并调用childForm的ChangeText()方法,以便childForm的textBox受影响。

我一直在寻找一段时间,但我似乎无法使其发挥作用。我不完全确定它甚至是可能的。

API似乎根本没有给我选项,而且WCF正在调用该方法,但无法识别原始表单。

2 个答案:

答案 0 :(得分:1)

当然,这是可能的,但由于这两种形式处于不同的过程中,因此您需要一种进程间通信(IPC)机制,如.NET RemotingWindows Communication Foundation。或者您可以使用this technique

答案 1 :(得分:-1)

假设你想在途中编辑逻辑

-

如果mainForm实例化childForm,那么它也应该持有对它的引用。

即。 private Form childForm = new Form();

调用mainForm.ChangeText(),它看起来像这样(这会被事件调用,所以参数实际上是事件和发送者参数):

public void ChangeText(EventArgs e, Sender sender)
{
   this.childForm.ChangeText(EventArgs e, Sender sender)
}

如果将其公开,您也可以直接访问textBox

this.childForm.textBox1.Text = text
  • 更正了其他用户指出的访问者错误