当前位置:编程学习 > C#/ASP.NET >>

c#中调用activex控件的问题

      请问各位大牛,我在form2 中加载了一个mfc开发的控件,在其中调用控件的方法后,控件能自动触发事件,即我在form2中能够获得,
但是,我在新建的form1中的,调用form2中的控件方法,想从触发事件中获得状态到form1中,然后form1根据状态,选择跳转到form2还是停留在form1。form1类似与登录页面,提交登录信息后,需要form2中的控件,返回一个状态。
   我在form1的代码是这样的:
  private void button(object sender ,EventArgs e){
   Form2 from2=new Form2();
   from2.axActivex1.login("ssss","123");
   while(true){
     if(from2.sucess=true){
         break;
     }
 }
form2.show();
this.Hide();
}

现在一直在form1页面处于while循环中,form2中触发事件没有被触发,本来如果注册成功,form2自动触发事件,然后给sucess赋值。
请问这个做法哪里有问题。 --------------------编程问答-------------------- 怎么没有人理呀,各位大牛,帮忙看看吧!!!!跪谢了 --------------------编程问答-------------------- 调试下
from2.sucess为什么一直为false --------------------编程问答-------------------- 肯定一直循环啊,你的代码有问题:
首先,你的login是异步登录吗?
如果不是:

   from2.axActivex1.login("ssss","123");
   while(true){
     if(from2.sucess=true){
         break;
     }
     from2.axActivex1.login("ssss","123");
 }

循环该成这样~

其次,如果是异步,那么

   from2.axActivex1.login("ssss","123");
   while(true){
     if(from2.sucess=true){
         break;
     }
     Thread.Sleep(200)
 }


我不太了解你的你的ActiveX控件什么情况,是不是form2写的有点问题,或者是因为form2没有show的原因,
这些你都可以考虑下 --------------------编程问答-------------------- 多谢各位,我的activex中,如果注册成功,是新建立的一个线程,在这个线程中用PostMessage来向控件传第消息,触发一个控件的事件函数。
该事件函数在form2中可以获得的:
private voide axActivex1_RegistMessage(object sender, AxActivexLib._ActivexEvents_RegistMessageEvent e){
   string msg =e.message;  //这里获得控件传上来的注册消息。
   if(msg==“sucess”){
       sucess=true;
  }
}

现在form2中的这个获取事件的函数,不能执行,只有当打开form2时才能执行,在form1等待时,无法执行,所以,我就获得不了suecss。 --------------------编程问答-------------------- 你的form2在new完之后,没有show,form2窗体的Load事件并没有执行
你可以参考做一个类似于QQ的登录过程,在form2窗体上,做下处理 --------------------编程问答-------------------- 你的意思是,登录页面也在form2中做,就不用form1了是吧。

那我想问问,form2中加载的activex控件,其中的自动触发的事件,必须要form2 被show后才能执行是吧。
这个跟您说的同步,异步注册有没有关系。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,