namespace TestDB
{
    public partial class FrmGCPanel : Form
    {
       public FrmGCPanel()
        {
            InitializeComponent();
        }
     public virtual int Process()
     {
          return 0;
     }
    }
}
namespace TestDB
{
    public partial class Form3 : FrmGCPanel 
    {
        public Form3():base()
        {
            InitializeComponent();
        }
        public override int Process()
        {
            int iRtn = 0;
            CTcpIP a = new CTcpIP();
            int i = a.Connect2Server("192.168.52.128", "9988", "1000", "10000");
            string strTemp;
            strTemp = Global.SIGN_IN;
            int iReclen = 0;
            int iSenlen = 0;
            iSenlen = a.TcpSendToServer(strTemp, "1000");
            if (iSenlen <= 0)
            {
                MessageBox.Show("发送数据失败!");
                a.CloseConn();
                return -1;
            }
........................
    }
}
namespace TestDB
{
    public class ConsoleItemData
    {        public static Form FrmPanel;    }
}
Form3 form3 = new Form3();
ConsoleItemData.FrmPanel = form3;
fomr3.Process();//可以得到
ConsoleItemData.FrmPanel.Process();//就不能使用Process();

解决方案 »

  1.   

    ConsoleItemData 这个只是引用form3吧,并不是form3对象
      

  2.   

    Form3 form3 = new Form3(); 
    ConsoleItemData.FrmPanel = form3; 
    fomr3.Process();//可以得到 
    // ConsoleItemData.FrmPanel.Process(); // 就不能使用Process();
    (ConsoleItemData.FrmPanel as Form3).Process(); // 这样应该可以
    ((Form3)ConsoleItemData.FrmPanel).Process();   // 或者这样
      

  3.   

        public class ConsoleItemData 
        { 
            public static Form FrmPanel;  // FrmPanel 是 Form,并不包含 Process()
        } Form3 form3 = new Form3(); 
    ConsoleItemData.FrmPanel = form3; // FrmPanel 被实际赋值为 Form3 的对象
    fomr3.Process();//可以得到 
    ConsoleItemData.FrmPanel.Process(); // FrmPanel 是 Form,不能使用Process()
    (ConsoleItemData.FrmPanel as Form3).Process(); // 这样应该可以
      

  4.   

    就是这个问题了,类型不匹配,Process属于Form3,但是FrmPanel的类型定义是Form public class ConsoleItemData 
        {         public static Form FrmPanel;     } 
      

  5.   

     public partial class FrmGCPanel : Form
        {
           // CDataPkg datapkg;
            Form FrmChild;        public FrmGCPanel()
            {
                InitializeComponent();
            }        public FrmGCPanel(ConsoleItemData tmpItemData,Form tmpFrm)
            {
                FrmChild = tmpFrm;
                FrmChild.Process();//这里用不了
                InitializeComponent();
            }
    }Form3 form3 = new Form3(data,this)//这样才把form3做为对象传到其他地方去,比如:FrmChild.Process();//这里用不了
      

  6.   


    public partial class FrmGCPanel : Form 
        { 
          // CDataPkg datapkg; 
            Form FrmChild;         public FrmGCPanel() 
            { 
                InitializeComponent(); 
            }         public FrmGCPanel(ConsoleItemData tmpItemData,Form tmpFrm) 
            { 
                FrmChild = tmpFrm; 
                FrmChild.Process();//这里用不了 
                InitializeComponent(); 
            } 
    } Form3 form3 = new Form3(data,this)//这样才把form3做为对象传到其他地方去,比如:FrmChild.Process();//这里用不了 
      

  7.   

    Form3 form3 = new Form3(data,this)//这样才把form3做为对象传到其他地方去,比如:FrmChild.Process();//这里用不了 
    Form4 form4 = new Form4(data,this)//也要也要象Form3传到FrmGCPanel 父窗体里面去