C# 从VB.net到C
我正在从VB向C语言迈出一大步。事情并没有变得太糟。但我卡在了我的treeview数据绑定潜水艇上。有一部分我无法工作。我正在使用自定义安全性来控制对应用程序的访问。它有一个绑定到站点地图的树状视图。我在站点地图中添加了一个名为securitylevel的自定义属性。一个人可以有多个安全级别,所以我用他们的安全级别构建了一个字符串。然后我删除他们无权访问的节点。我无法使用.net角色,因为我必须使用现有数据库。我不知道如何删除父节点和子节点。下面是VB代码C# 从VB.net到C,c#,asp.net,treeview,C#,Asp.net,Treeview,我正在从VB向C语言迈出一大步。事情并没有变得太糟。但我卡在了我的treeview数据绑定潜水艇上。有一部分我无法工作。我正在使用自定义安全性来控制对应用程序的访问。它有一个绑定到站点地图的树状视图。我在站点地图中添加了一个名为securitylevel的自定义属性。一个人可以有多个安全级别,所以我用他们的安全级别构建了一个字符串。然后我删除他们无权访问的节点。我无法使用.net角色,因为我必须使用现有数据库。我不知道如何删除父节点和子节点。下面是VB代码 strNodesToHide
strNodesToHide As String = "100, 500, 900"
Dim node As SiteMapNode = TryCast(e.Node.DataItem, SiteMapNode)
If Len(node("SecurityLevel")) <> "0" Then
If InStr(strNodesToHide, node("securityLevel")) Then
e.Node.Parent.ChildNodes.Remove(e.Node)
End If
End If
我认为这应该是一个非常直接的转换:
string strNodesToHide = "100, 500, 900";
SiteMapNode node = e.Node.DataItem as SiteMapNode;
if (node["securityLevel"].length != 0) {
if (strNodesToHide.indexOf(node["securityLevel"]) > -1) {
e.Node.Parent.ChildNodes.Remove(e.Node);
}
}
诸如此类:
我还没有测试过这个。希望它能起作用。那么,您无法将代码的哪些方面翻译为C?即使VB.NET代码已经很难看,Len也会返回一个整数,您可以将其与1进行比较。相反,使用If nodeSecurityLevel.Length 0或If Not String.IsNullOrEmptynodeSecurityLevelGuesswork,但如果要隐藏的节点实际上是100、500和900,则使用静态只读HashSet strNodesToHide=new HashSetnew[]{100、500、900}可能会更快;然后检查strNodesToHide.Containsnode[securityLevel]——如果这些值始终是数值,则应使用实际类型,即int。Typo,您可能指的是strNodesToHide.indexOfnode[securityLevel]。@Corak确实如此。换了。