如何在从serialport接收的MdiChild表单中显示数据

时间:2011-01-25 07:10:54

标签: c#

爵士 我创建了一个MDI Parent表单和三个Mdi Child表单。每个子表单都包含一个按钮。单击按钮时,将显示新表单。意思是说如果我点击3个子窗体中的所有3个按钮,则会显示3个新窗体。没关系。

我的问题是:

1-单击按钮时显示的每个新表单也会显示在任务栏中。我希望每个新表单(除了mdi子表单)都是主要mdi父项的mdi子项。

2-这些新表单显示从通过serialport连接的设备接收的数据。我必须创建多少个串口对象?如果一个,那么它必须在哪里创建,在主mdi父表单或单个表单(3个新表单)?如果它在MDI父表单上,那么我如何在3个新打开的表单中访问该对象?如果它在新创建的表单上,则会有3个串行端口对象访问同一个COM端口,这将导致异常声明 - “COM端口不可访问”。

回复...我最近在c#中被淘汰了毕业生。所以请回复,以便我能正确理解。 感谢....

2 个答案:

答案 0 :(得分:1)

1)显示表单时,设置MdiParent属性:

newform.MdiParent = mdiparent;
newform.Show();

2)您创建了与打开串行端口一样多的SerialPort对象。    如果有的话,我会在父母身上打开它,然后通过方法调用将数据发送给孩子们(你可以聪明地给他们一个接口:)。    然后,它可以完全控制解析数据并过滤每个接收的数据。

答案 1 :(得分:1)

1)每个新表单都有一个bool属性ShowInTaskbar - 将其设置为false

// Create new MDI Child
// within ButtonClick in MainForm
CHILDFORMCLASS nf = new CHILDFORMCLASS();
nf.mdiParent = this;
nf.Show();

2)SerialPort对象 - 我只会在主窗体中创建一个     在您的ChildForms中,您可以使用MdiParent

访问mainForm
MainForm
     Write a public property to access the serialPort

ChildForm
     PARENTFORMCLASS p = (PARENTFORMCLASS) this.Mdiparent;
     p.PUBLICPROPERTY // to access serial port object

3)因为只有一个对象 - 不应再发生

HTH