我在C#中编写了一个API,用于vb6& vbscript并假设我的API详细信息如下:
1. API中有一个表格,但不向COM公开
2.有一个名为ShowForm()的方法,代码为“form1.Show()”。此方法ShowForm()向COM公开,以便我可以从vb6 / vbscript调用此方法。
所以,我的问题是:
当我在按钮单击事件下在vb6中调用ShowForm()方法时,在C#API中创建的表单会显示,但如果我实例化同一个类并在vbscript中调用相同的方法,则表单不会显示。
但是,如果我更改ShowForm()中的代码,
- 从“form1.Show()”到“form1.ShowDialog()”,它将在vb6 / vbscript中显示。但是,它显示为一种模态形式,我想要的是无模式
要么
- 从“form1.Show()”到“Application.Run(form1)”。它将显示在vbscript中,但不会显示在vb6中(它实际显示在vb6中,但在我关闭C#中的表单后崩溃)
我能做些什么才能让它在vb6和vbscript中正常工作?非常感谢您的建议
PS:它不是脚本语法问题或COM问题。它应该与form.show()/ ShowDialog()/ Application.Run()或消息循环thingy有关,这是我不太懂的东西
我的代码或多或少会像这样。
//C# code
public void ShowForm()
{
m_frm.tempWebBrowser.Navigate("http://stackoverflow.com", "_self", Encoding.Default.GetBytes(""), "Content-Type: application/x-www-form-urlencoded");
m_frm.FormBorderStyle = FormBorderStyle.Sizable;
m_frm.ShowInTaskbar = true;
m_frm.WindowState = FormWindowState.Maximized;
m_frm.tempWebBrowser.Visible = true;
m_frm.Show();
}
//VB6 code, vbscript also using exactly the same code in the event
Private Sub Command1_Click()
Dim tempClass
Set tempClass = CreateObject("myClass.API")
tempClass.ShowForm
End Sub
答案 0 :(得分:0)
由于您的建议,表单未完全显示...线程上没有运行消息泵。如果您试图从VBScript中点击并忘记C#窗口,我建议您在单独的过程中启动它。它会产生与你所描述的相同的效果。如果你试图启动它并等待用户与它进行交互(比如你正在提示他们提供信息),那么以模态方式显示是合适的。