2011-03-01 84 views
1

这个是什么C#代码在VB.NET的等价物:VB.NET等效?

UctlTest uctlTest; 
uctlTest= (UctlTest)Page.LoadControl("UserControls/UctlTest.ascx"); 
if (plcTest.Controls.Count == 0) 
    plcTest.Controls.Add(uctlTest); 

UctlTest:用户控制

plcTest:占位符

我尝试这样做:

Dim uctlTestVB As UctlTestVB 
uctlTestVB = CType(Page.LoadControl("~/UserControls/UctlTestVB.ascx"), UctlTestVB) 
If (Equals(uctlTestVB.Controls.Count, 0)) Then   
    plcTest.Controls.Add(uctlTestVB) 
End If 

但数在VB.NET中等于1,而在C#中则等于0.

+1

http://www.developerfusion.com/tools/convert/vb-to-csharp/ – Shoban 2011-03-01 03:50:51

+1

哇!现在,StackOverflow被用作代码转换工具。大! – Mayank 2011-03-01 03:51:24

+1

@Mayank ..为什么不呢? – Shoban 2011-03-01 03:52:34

回答

0

快速浏览你的代码检查不同的控件的子数。

C#:plcTest .Controls.Count

VB:uctlTestVB .Controls.Count

然而,VB代码仍然增加了负载控制plcTest,但检查uctlTestVB实例的计数。

3

通知你有一个额外"~"符号在你的VB版本,但不是在你的C#:

uctlTest= (UctlTest)Page.LoadControl("UserControls/UctlTest.ascx"); 

VS

uctlTestVB = CType(Page.LoadControl("~/UserControls/UctlTestVB.ascx"), UctlTestVB)

+0

得到一个异常:虚拟路径'/UserControls/UctlReportingCentreSearchVB.ascx'映射到另一个应用程序,这是不允许的。 – user594659 2011-03-01 03:56:23

+0

不是''/用户'而是''用户'。领先的斜杠意味着根,而缺乏相对于当前目录的一种手段。 – 2011-03-01 04:21:10

-1

的代码是等价的,你的控制可能不是。

为什么不在两个代码片段中加载相同的控件,并验证它们的工作方式相同。

或者使用调试器/监视窗口,并看看Controls集合在两个并找出它们之间的区别