C# 使用实例问题从VB6中的Form1调用Form2
实际上,我想在我的VB6项目中使用cefsharp,我遇到了以下两个问题:-C# 使用实例问题从VB6中的Form1调用Form2,c#,vb6,cefsharp,C#,Vb6,Cefsharp,实际上,我想在我的VB6项目中使用cefsharp,我遇到了以下两个问题:- 我的项目是从form1运行的,我需要调用form2,在那里我使用C#类库使用cefsharp初始化了chromium浏览器 现在当我从form1呼叫form2时 form2.showme (其中showme只是一个设置大小等的自定义函数)chromium浏览器能够在没有任何问题的情况下进行初始化,但是当我调用form2时 Public ofrm2 AS form2 Public Sub function() Set
form1
运行的,我需要调用form2
,在那里我使用C#类库使用cefsharp初始化了chromium浏览器form2.showme
(其中showme
只是一个设置大小等的自定义函数)chromium浏览器能够在没有任何问题的情况下进行初始化,但是当我调用form2时
Public ofrm2 AS form2
Public Sub function()
Set ofrm2=new form2
call ofrm2.showme
End Sub
然后,即使没有给出错误日志或任何类型的错误,并且成功地显示了form2,但这次它上没有任何浏览器对象
我还使用SetParent
和SetWindowPos
在form2中设置chromium浏览器的长度和宽度。我真的找不到问题,请建议一些解决方法
[PermissionSet(SecurityAction.Demand, Name ="FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
[ClassInterface(ClassInterfaceType.None)]
public partial class Form1 : Form, IForm1
{
private ChromiumWebBrowser _browser;
public Form1()
{
InitializeComponent();
//initializeChromium();
}
public int initializeChromium()
{
CefSettings settings = new CefSettings();
if (!Cef.IsInitialized)
{
CefSharp.Cef.Initialize(settings);
}
_browser = new ChromiumWebBrowser("http://127.0.0.1:24125/ABC/DEF.html");
_browser.RegisterJsObject("External", this);
this.Controls.Add(_browser);
_browser.BringToFront();
_browser.Dock = DockStyle.Fill;
this.Show();
return 0;
}
}
我的表格1:-
Private Sub Form_Load()
Call launch ------ This one does not work. definition is given in my module below
'frmHTML.Show -----This one works
End Sub
Private Sub Form_UnLoad(cancel As Integer)
Set ofrmHtml = Nothing
End Sub
ModDec.bas:-
Option Explicit
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public ofrmHtml As frmHTML
Public Sub launch()
Set ofrmHtml = New frmHTML
Call ofrmHtml.InitChromium1
ofrmHtml.ShowMe
'call ofrmHtml.ShowMe
End Sub
我的表格2(frmHTML):-
而C#被添加到这里的原因是什么?@Steve我用C#创建了一个DLL,允许VB6访问cefsharp和Chromium。我知道其他人已经成功地将cefsharp集成到VB6中,其中一个这样的项目是我认为没有足够的代码/细节来找出这两个场景中的不同之处。请添加更多相关详细信息。我想查看表单2中的初始化代码,尤其是
showme
函数的内容。。。特别是,是否有任何直接引用form2
,或者其他一些引用打破了这一点?此外,我可以想象尝试一些事情,比如在Form\u Load()
和Form\u Activate()
或其他路径上尝试一些初始化,只是为了尝试获取有关它实际执行的操作的更多信息,即使它们不会导致实际的修复。
Option Explicit
Public cSharpObj As New cSharp.Form1
Private Sub Form_Load()
'Call InitChromium1
Exit Sub
End Sub
Public Sub InitChromium1()
' On Error GoTo Err_Hndlr
SetParent cSharpObj.getHandle, frmHTML.hWnd
SetWindowPos cSharpObj.getHandle, 0, 0, 0, 512, 480, 0
Dim i As Integer
i = -1
i = cSharpObj.initializeChromium()
Exit Sub
End Sub
Public Sub ShowMe()
Call Me.Show
End Sub