fullwolf 发表于 2014-11-25 11:40:01

关于teigha例子c#转成vb.net的一个问题

由于不会c#,就把代码转换成vb.net。在线转的。但转化后总出问题。以下是一个类代码。请大家帮我看看。class SR : SelectionReactor
{
    ObjectIdCollection selected;
    ObjectId spaceId;
    public SR(ObjectIdCollection s, ObjectId id)
    {
      spaceId = id;
      selected = s;
    }
    public override bool Selected(DrawableDesc pDrawableDesc)
    {
      DrawableDesc pDesc = pDrawableDesc;
      if (pDesc.Parent != null)
      {
      // we walk up the GS node path to the root container primitive
      // to avoid e.g. selection of individual lines in a dimension
      while (((DrawableDesc)pDesc.Parent).Parent != null)
          pDesc = (DrawableDesc)pDesc.Parent;
      if (pDesc.PersistId != IntPtr.Zero && ((DrawableDesc)pDesc.Parent).PersistId == spaceId.OldIdPtr)
      {
          pDesc.MarkedToSkip = true; // regen abort for selected drawable, to avoid duplicates
          selected.Add(new ObjectId(pDesc.PersistId));
      }
      return true;
      }
      return false;
    }
    // this more informative callback may be used to implement subentities selection
    public override SelectionReactorResult Selected(PathNode pthNode, Teigha.GraphicsInterface.Viewport viewInfo)
    {
      return SelectionReactorResult.NotImplemented;
    }
};转成vb.net的代码Class SR
    Inherits SelectionReactor
      Private <font color="#ff0000">Shadows</font> selected As ObjectIdCollection
    Private spaceId As ObjectId
    Public Sub New(s As ObjectIdCollection, id As ObjectId)
      spaceId = id
            Selected = s
    End Sub
      'Public Overrides Function Selected(pDrawableDesc As DrawableDesc) As Boolean
      Public Overloads Function Selected(ByVal pDrawableDesc As DrawableDesc) As Boolean
            Dim pDesc As DrawableDesc = pDrawableDesc
            If pDesc.Parent IsNot Nothing Then
                ' we walk up the GS node path to the root container primitive
                ' to avoid e.g. selection of individual lines in a dimension
                While DirectCast(pDesc.Parent, DrawableDesc).Parent IsNot Nothing
                  pDesc = DirectCast(pDesc.Parent, DrawableDesc)
                End While
                If pDesc.PersistId <> IntPtr.Zero AndAlso DirectCast(pDesc.Parent, DrawableDesc).PersistId = spaceId.OldIdPtr Then
                  pDesc.MarkedToSkip = True
                  ' regen abort for selected drawable, to avoid duplicates
                  selectedc.Add(New ObjectId(pDesc.PersistId))
                End If
                Return True
            End If
            Return False
      End Function
      ' this more informative callback may be used to implement subentities selection
      Public Overrides Function Selected(ByVal pthNode As PathNode, ByVal viewInfo As Teigha.GraphicsInterface.Viewport) As SelectionReactorResult
            Return SelectionReactorResult.NotImplemented
      End Function
    End Classshodows本来是没有的。建议我加。我加上还是不行。提示如下
错误        1        “Selected”已声明为此 class 中的“Private Shadows selected As Teigha.DatabaseServices.ObjectIdCollection”。        H:\source code\dmdraw\dmdraw\SelectionReactor.vb        114        35        dmdraw
错误        2        “Selected”已声明为此 class 中的“Private Shadows selected As Teigha.DatabaseServices.ObjectIdCollection”。        H:\source code\dmdraw\dmdraw\SelectionReactor.vb        132        35        dmdraw

有哪位熟悉两种代码的吗。应该怎么处理呢。

davehuhudave 发表于 2015-3-16 10:23:36

vb.net 不区分大小写,c#是区分的,在vb.net中变量selected 和Selected 函数冲突了
页: [1]
查看完整版本: 关于teigha例子c#转成vb.net的一个问题