Condividi tramite


FileCodeModel.CodeElementFromPoint(TextPoint, vsCMElement) Method

Definition

Returns a code element at a specific location in a source file.

public:
 EnvDTE::CodeElement ^ CodeElementFromPoint(EnvDTE::TextPoint ^ Point, EnvDTE::vsCMElement Scope);
public:
 EnvDTE::CodeElement ^ CodeElementFromPoint(EnvDTE::TextPoint ^ Point, EnvDTE::vsCMElement Scope);
EnvDTE::CodeElement CodeElementFromPoint(EnvDTE::TextPoint const & Point, EnvDTE::vsCMElement Scope);
[System.Runtime.InteropServices.DispId(5)]
public EnvDTE.CodeElement CodeElementFromPoint (EnvDTE.TextPoint Point, EnvDTE.vsCMElement Scope);
[<System.Runtime.InteropServices.DispId(5)>]
abstract member CodeElementFromPoint : EnvDTE.TextPoint * EnvDTE.vsCMElement -> EnvDTE.CodeElement
Public Function CodeElementFromPoint (Point As TextPoint, Scope As vsCMElement) As CodeElement

Parameters

Point
TextPoint

Required. A TextPoint object representing the editor location for which you want a code element.

Scope
vsCMElement

Required. A vsCMElement value representing the code element of the specified type that contains the editor location.

Returns

A CodeElement object.

Attributes

Examples

Sub CodeElementFromPointExample(ByVal dte As DTE2)  

    ' Before running this example, open a code document from a project  
    ' and place the insertion point anywhere inside the source code.  
    Try  
        Dim sel As TextSelection = _  
            CType(dte.ActiveDocument.Selection, TextSelection)  
        Dim pnt As TextPoint = CType(sel.ActivePoint, TextPoint)  

        ' Discover every code element containing the insertion point.  
        Dim fcm As FileCodeModel = _  
            dte.ActiveDocument.ProjectItem.FileCodeModel  
        Dim elems As String  
        Dim elem As CodeElement  
        Dim scope As vsCMElement  
        For Each scope In [Enum].GetValues(scope.GetType())  
            elem = fcm.CodeElementFromPoint(pnt, scope)  
            If IsNothing(elem) = False Then  
                elems &= elem.Name & " (" & scope.ToString() & ")" & _  
                    vbCrLf  
            End If  
        Next  

        MsgBox("The following elements contain the insertion point:" _  
            & vbCrLf & vbCrLf & elems)  
    Catch ex As Exception  
        MsgBox(ex.Message)  
    End Try  

End Sub  
public void CodeElementFromPointExample(DTE2 dte)  
{  
    // Before running this example, open a code document from a project  
    // and place the insertion point anywhere inside the source code.  
    try  
    {  
        TextSelection sel =   
            (TextSelection)dte.ActiveDocument.Selection;  
        TextPoint pnt = (TextPoint)sel.ActivePoint;  

        // Discover every code element containing the insertion point.  
        FileCodeModel fcm =   
            dte.ActiveDocument.ProjectItem.FileCodeModel;  
        string elems = "";  
        vsCMElement scopes = 0;  

        foreach (vsCMElement scope in Enum.GetValues(scopes.GetType()))  
        {  
            CodeElement elem = fcm.CodeElementFromPoint(pnt, scope);  

            if (elem != null)  
                elems += elem.Name + " (" + scope.ToString() + ")\n";  
        }  

        MessageBox.Show(  
            "The following elements contain the insertion point:\n\n" +   
            elems);  
    }  
    catch (Exception ex)  
    {  
        MessageBox.Show(ex.Message);  
    }  
}  

Remarks

CodeElementFromPoint returns the code element associated with the TextPoint based on the specified scope or granularity of containment. If no code element of the specified type contains the editor location, then this method fails.

Applies to