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#