我正在尝试从文本框中的插入符号位置获取行号,这就是我所拥有的:
int Editor::GetLineFromCaret(const std::wstring &text)
{
unsigned int lineCount = 1;
for(unsigned int i = 0; i <= m_editWindow->SelectionStart; ++i)
{
if(text[i] == '\n')
{
++lineCount;
}
}
return lineCount;
}
但我遇到了一些奇怪的错误。例如,如果我在文本框中有 10 行文本并使用此功能,它不会给我正确的行号,除非插入符号在该行中大约有 10 个字符,并且某些行没有字符,所以它是不正确的。
这就是我在 Damir Arh 的帮助下解决问题的方法:
int Editor::GetLineFromCaret(const std::wstring &text)
{
unsigned int lineCount = 1;
unsigned int selectionStart = m_editWindow->SelectionStart;
for(unsigned int i = 0; i <= selectionStart; ++i)
{
if(text[i] == '\n')
{
++lineCount;
++selectionStart;
}
}
return lineCount;
}