【问题标题】:Visual Studio Extension icon in Text Editor文本编辑器中的 Visual Studio 扩展图标
【发布时间】:2013-08-14 14:56:53
【问题描述】:

如何在编辑器中插入带有点击事件或自定义按钮的图标。 我想创建看起来像 R# 或 CodeRush 的控件,然后单击图标打开智能标签。 对不起,我的英语不好。 谢谢。

截图:

我创建智能标签,但在文本上有标准标记或标准重构标记。我想要自定义按钮智能标签。

【问题讨论】:

  • 您确实需要提供更多详细信息。到目前为止,您尝试过什么?
  • 图标是图像,它不能有点击事件,我也不知道 R#/CodeRush 是什么,你应该更新你的问题以包含更多细节
  • 你好。添加了屏幕截图。
  • 我创建了智能标签,但在文本上有标准标记或标准重构标记。我想要自定义按钮智能标签。
  • 您看过 Visual Studio SDK 吗?

标签: c# visual-studio visual-studio-extensions


【解决方案1】:

在创建智能标签时,可以设置ISmartTagSession.IconSource来设置要显示的图标。

【讨论】:

  • 它是列表中一个智能标签的图标源吗?我想要打开智能标签之前的图标。
  • 可以在视图上创建和插入按钮,但是如何在点击时打开智能标签?
  • 会话是顶级项目,包含操作列表。每个智能标记操作也有一个单独的图标属性。您的另一个问题不清楚,但如果与此无关,最好关闭此问题并开始一个新问题。
  • 好的,谢谢。但是如何设置按钮的位置或坐标呢?他在字符的底部渲染。
  • 按钮将呈现在标准位置。您可以更改它与哪个字符对齐,但仅此而已。如果你想把它放在一个随机的地方,你不能。
【解决方案2】:

我创建用户控件并在编辑器中插入。 旧控件 SmartTag 删除。 如何在我的用户控件中添加智能标签操作?控件有菜单,但不能添加 SmartTagActions。 如何使我的控件被创建而不是标准?始终创建标准控件。

private bool ButtonSmartTag(ITextView view)
    {
        foreach (ISmartTagSession s in _broke.GetSessions(view))
        {
            var wpfTextView = (IWpfTextView)view;               
            var adornmentLayer = wpfTextView.GetAdornmentLayer("SmartTag");

            foreach (var alement in adornmentLayer.Elements)
            {
                adornmentLayer.RemoveAllAdornments();

                var line = view.GetTextViewLineContainingBufferPosition(_view.Caret.Position.BufferPosition);
                alement.VisualSpan, "butRe", but, null);

                var mb = new ReButtonMenu();
                mb.Margin = new Thickness(0, line.Top, 0, 0);
                adornmentLayer.AddAdornment(AdornmentPositioningBehavior.TextRelative, alement.VisualSpan, "butRe", mb, null);
            }
        }
        return false;
    }

【讨论】:

    猜你喜欢
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多