C#代码如下:
//接口声明
public interface SHFRM
{
IntPtr ShFrm(string MenuCaption,string ConnectionString,string CurrentUser,IntPtr SaveHandle);
}
//接口实现
public IntPtr ShFrm(string MenuCaption,string ConnectionString,string CurrentUser,IntPtr SaveHandle)
{
if ((SingleInfo != null)&&(!SingleInfo.IsDisposed))
{
SingleInfo.Show(); //主窗体
SingleInfo.DelphiFormHandle = SaveHandle;
if (SingleInfo.Handle != GetForegroundWindow())
{
SetForegroundWindow(SingleInfo.Handle);
SingleInfo.WindowState = FormWindowState.Maximized;
}
//关键问题是下面这几项操作
ErpConnectionString = ConnectionString;//保存传过来的参数
Myconnection = publictool.getsqlconnection(ConnectionString);
pubCurrentUser = GetUser(CurrentUser, Myconnection);//通过传过来的参数,调用方法生成user结构
toolStripStatusLabel1.Text = "用户名:" + CurrentUser;
toolStripStatusLabel2.Text = pubCurrentUser.UserName;
ShowMDIForm(MenuCaption);
} return SingleInfo.Handle;
}Delphi中的调用代码为:
CSharpHandle := (TTVSMainForm.Create(self).DefaultInterface as SHFRM).SHFRM_ (MenuCaption,ConnectionString,pubCurrentUser.UserId,self.Handle);
测试结果:
C#主窗体可以调用并创建出来,问题是参数传递出现了问题,Delphi这边的string类型参数,好像根本没有传到C#的函数里面去,在此向高手请教!!!
//接口声明
public interface SHFRM
{
IntPtr ShFrm(string MenuCaption,string ConnectionString,string CurrentUser,IntPtr SaveHandle);
}
//接口实现
public IntPtr ShFrm(string MenuCaption,string ConnectionString,string CurrentUser,IntPtr SaveHandle)
{
if ((SingleInfo != null)&&(!SingleInfo.IsDisposed))
{
SingleInfo.Show(); //主窗体
SingleInfo.DelphiFormHandle = SaveHandle;
if (SingleInfo.Handle != GetForegroundWindow())
{
SetForegroundWindow(SingleInfo.Handle);
SingleInfo.WindowState = FormWindowState.Maximized;
}
//关键问题是下面这几项操作
ErpConnectionString = ConnectionString;//保存传过来的参数
Myconnection = publictool.getsqlconnection(ConnectionString);
pubCurrentUser = GetUser(CurrentUser, Myconnection);//通过传过来的参数,调用方法生成user结构
toolStripStatusLabel1.Text = "用户名:" + CurrentUser;
toolStripStatusLabel2.Text = pubCurrentUser.UserName;
ShowMDIForm(MenuCaption);
} return SingleInfo.Handle;
}Delphi中的调用代码为:
CSharpHandle := (TTVSMainForm.Create(self).DefaultInterface as SHFRM).SHFRM_ (MenuCaption,ConnectionString,pubCurrentUser.UserId,self.Handle);
测试结果:
C#主窗体可以调用并创建出来,问题是参数传递出现了问题,Delphi这边的string类型参数,好像根本没有传到C#的函数里面去,在此向高手请教!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货