我想在TextBox
winform 应用中获得C#
行号。但与this question不同,我想要实际的行号,无论是包裹的行还是\r\n
的新行。
var lines = tb.Lines.Count();
只会通过回车获取行号。
那我怎样才能得到我想要的东西?
答案 0 :(得分:3)
所以我找到了答案here
我必须创建我自己的TextBox
版本:
using System;
using System.Windows.Forms;
namespace TextBoxLines
{
public class TextBoxEx : TextBox
{
private const int EM_GETLINECOUNT = 0xBA;
private const int EM_LINEINDEX = 0xBB;
private const int EM_LINELENGTH = 0xC1;
public TextBoxEx() :base()
{
//Since we'll want multiple lines allowed we'll add that to the constructor
this.Multiline = true;
this.ScrollBars = ScrollBars.Vertical;
}
public int LineCount
{
get
{
Message msg = Message.Create(this.Handle, EM_GETLINECOUNT, IntPtr.Zero, IntPtr.Zero);
base.DefWndProc(ref msg);
return msg.Result.ToInt32();
}
}
public int LineIndex(int Index)
{
Message msg = Message.Create(this.Handle, EM_LINEINDEX, (IntPtr)Index, IntPtr.Zero);
base.DefWndProc(ref msg);
return msg.Result.ToInt32();
}
public int LineLength(int Index)
{
Message msg = Message.Create(this.Handle, EM_LINELENGTH, (IntPtr)Index, IntPtr.Zero);
base.DefWndProc(ref msg);
return msg.Result.ToInt32();
}
}
}
美丽。现在,您已将它们内置到TextBox中。使用它们 就像你使用TextBox的任何属性并获取数字一样 TextBox中显示的行 - 如果它们被包装则无关紧要 线条或实际线条。
答案 1 :(得分:-1)
我不明白您想要什么,但通常您可以使用此代码来计算文本框中的行数:
public int LineNumber()
{
int LineNumber;
LineNumber = textBoxNotePad.Lines.Length;
return LineNumber;
}
希望有用