我在主窗体里添加了一个Mscomm控件,并进行初始化设置。在其他的窗体由于要向axMSComm1.Output发下位机的控制命令,所以把Mscomm设为public然后在需要的时候调用。但是现在出现HRESULT:0x800A1F52异常。不知道怎么解决。请问可以在其他窗体调用axMSComm1.Output吗?

解决方案 »

  1.   

    直接调用可能会有问题,何不把axMSComm1作为一个参数传过去呢
      

  2.   

    我之前也碰到过这个问题,
    在MSCOMM所在的窗体中使用该控件没有问题,但是,
    在别的窗体中打开含有该MSCOMM控件的窗体,
    然后使用该空间就出现问题。。
      

  3.   

    你现在的NET Framework应该是2.0之后了吧。如果这样的话,为何不用SerialPort组件呢?为何还要用Mscomm呢?
      

  4.   

    哦,没用过serialPort组件,这个可以在其他窗口调用吧?
      

  5.   

    serialPort也不能窗体间调用啊?有没有高人指点?
      

  6.   

    你用Mscomm出问题可能是你new了一个新窗体,两个窗体使用同一个串口,会报错。
    建议用SerialPort
    如果你用拖控件的方式在Form1中添加SerialPort,一定记得把Form1.Designer里的添加SerialPort的那一行代码中的private改为public。
    如果你想在Form2中使用该控件,还得在Form2代码里new一个Form1出来,但这样还是造成两个控件访问同一个串口,你可以尝试把添加的SerialPort控件搞成Static的,这样在Form2里就不用new Form1()了。奉劝楼主尽量不要两个窗体公用一个控件,而是尽量使用数据传递的方式。你把该要的数据传过去就可一个,两个窗口各自处理。这是公用计算机,我没法调代码,就不贴代码了
      

  7.   

    没必要啊,你把mscom的操作写成一个函数,然后再在其他的窗口调用啊
      

  8.   

    没必要啊,你把mscom的操作写成一个函数,然后再在其他的窗口调用啊
    但是涉及到axmscomm的操作就会报错。yf198557
    奉劝楼主尽量不要两个窗体公用一个控件,而是尽量使用数据传递的方式。你把该要的数据传过去就可一个,两个窗口各自处理。 
    但是我确实是需要在不同窗体来输入不同命令。所以必须共有一个控件。现在有很多问题啊。