【问题标题】:Getting null when using TextSelection sel = (TextSelection)dte.ActiveDocument.Selection;使用 TextSelection 时获取 null sel = (TextSelection)dte.ActiveDocument.Selection;
【发布时间】:2016-04-03 13:56:48
【问题描述】:

我创建了一个使用这行代码的 Visual Studio 2013 插件,例如:

public void CodeElementFromPointExample(DTE2 dte)
{
    try
    {
        TextSelection sel =
           (TextSelection) dte.ActiveDocument.Selection;

        TextPoint pnt = (TextPoint)sel.ActivePoint;
        ...
    }
    ...
}

我在该行中得到一个空异常:

TextSelection sel = (TextSelection) dte.ActiveDocument.Selection;

一般来说,我想发现一个“cs”文件代码并找到一个方法名称,例如单击该文件及其属性。

【问题讨论】:

  • Selection,顾名思义,就是文档中当前选中的文本。仅单击某处不会选择任何内容。
  • 我不只是单击文档上的某个位置,我选择一个文本然后单击复制,然后调用复制事件,在此方法中我尝试完成其余的工作,发现方法等。
  • 您是否有示例如何正确执行?,我在网络上找不到真正的工作示例。只是 sn-ps 代码。
  • 也许您的 dte 变量为空?

标签: c# visual-studio visual-studio-2013 vspackage


【解决方案1】:

在您的代码中,dte 或 dte.ActiveDocument 可以为空。使用一些代码逻辑来确定大小写。

一旦你得到 dte.ActiveDocument 不为空,获取它的 .Object 属性并尝试将其转换为 EnvDTE.TextDocument,以查看活动文档是否为文本文档。

然后,TextDocument.Selection 返回一个 TextSelection 对象。

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    相关资源
    最近更新 更多