VS 2010:根据图案更改线条的颜色

时间:2010-07-15 00:26:25

标签: visual-studio-2010

如何根据某些自定义模式更改Visual Studio 2010中的行颜色?例如,我想更改以logger.开头的所有行的颜色。它有可能吗?

我也安装了ReSharper 5.

1 个答案:

答案 0 :(得分:2)

我写了一个快速的小扩展来做到这一点;因为你很可能想要修改它,你应该grab the source。重要的部分是LayoutChanged中的代码:

    void ViewLayoutChanged(object sender, TextViewLayoutChangedEventArgs e)
    {
        IWpfTextView view = sender as IWpfTextView;
        var adornmentLayer = view.GetAdornmentLayer("HighlightLines");

        foreach (var line in e.NewOrReformattedLines)
        {
            if (line.Extent.GetText().StartsWith("logger.", StringComparison.OrdinalIgnoreCase))
            {
                Rectangle rect = new Rectangle()
                    {
                        Width = view.ViewportWidth + view.MaxTextRightCoordinate,
                        Height = line.Height,
                        Fill = Brushes.AliceBlue
                    };

                Canvas.SetTop(rect, line.Top);
                Canvas.SetLeft(rect, 0);
                adornmentLayer.AddAdornment(line.Extent, null, rect);
            }
        }
    }

要构建/运行此功能,您需要:

  1. Download the VS2010 SDK
  2. 从编辑器扩展模板创建一个新项目(我通常选择Visual C# - >可扩展性 - >编辑文本装饰)。
  3. 删除它创建的所有源文件。
  4. 将HighlightMatchingLines.cs添加到项目中。
  5. F5运行/测试。
  6. 如果您想更改画笔,请更改Fill = Brushes.AliceBlue行。
  7. 如果要更改匹配的文本,请更改if表达式中的条件。
  8. 如果要更改加载扩展名的文件类型,请更改[ContentType]属性。 this msdn page的“内容类型”部分列出了一些常见的内容。