【问题标题】:Visual Studio 2010 SDK, Get Caret ColumnVisual Studio 2010 SDK,获取插入符号列
【发布时间】:2011-04-02 04:38:24
【问题描述】:

非常不言自明,但我试图找出插入符号离左侧有多远。 目前我有以下行

var caret = m_doc.Caret.Position.BufferPosition;
return doc.GetTextViewLineContainingBufferPosition(caret).Start.Difference(caret);

其中 doc 是 IWpfTextView。

问题是,如果您有一个选项卡,它会将选项卡计为一个,而不是由多少个空格组成选项卡。

示例 - |表示光标所在的位置,\t 是一个大小为 4 的选项卡,charNo 是我的代码当前返回的,col 是我想要的:

|var a  //col:0 charNo:0
\t|var  //col:4 charNo:1
 \t|var //col:4 charNo:2
 \tv|ar //col:5 charNo:3

谢谢。

【问题讨论】:

    标签: c# .net visual-studio-2010


    【解决方案1】:

    为什么不使用.Left 而不是.Start?无论选项卡如何,都会从坐标平面的左侧返回当前位置。

    【讨论】:

    • Left 返回一个双精度值,我认为它是从左边算起的像素数。
    • 完全正确。 msdn 说:文本渲染坐标系中的距离对应于逻辑像素。如果文本渲染表面没有任何缩放变换显示,那么文本渲染坐标系中的 1 个单位对应于显示器上的 1 个像素。 msdn.microsoft.com/en-us/library/…
    • 但我不是在像素位置之后,我在列之后,如我的示例所示,我在你有多少个字符之后,但将制表符视为数字它代表的空间。
    • 哦,我...你改变了你的问题。当你这样做时,你应该以某种方式注意到这一点。
    猜你喜欢
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多