为什么当我在C#表单中添加更多字符时,绘制的字符串会发生变化?
因此,我需要在C#Forms中只使用drawString、drawsline等创建一个文本编辑器 当我键入文本时,文本会发生变化,这导致文本光标无法正确显示,因为它取决于我通过MeasureString()计算的文本宽度 以下是我编写文本和绘制光标的函数:为什么当我在C#表单中添加更多字符时,绘制的字符串会发生变化?,c#,string,forms,notepad,C#,String,Forms,Notepad,因此,我需要在C#Forms中只使用drawString、drawsline等创建一个文本编辑器 当我键入文本时,文本会发生变化,这导致文本光标无法正确显示,因为它取决于我通过MeasureString()计算的文本宽度 以下是我编写文本和绘制光标的函数: private void TextEditor_Paint(对象发送方,PaintEventArgs e) { 笔=新笔(颜色:黑色,1); font=新System.Drawing.font(“Arial”,teModel.font,Sys
private void TextEditor_Paint(对象发送方,PaintEventArgs e)
{
笔=新笔(颜色:黑色,1);
font=新System.Drawing.font(“Arial”,teModel.font,System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Pixel,((字节)(0));
图形g=e.图形;
字符串stringToMeasure=“”;
int i=0;
foreach(teModel.allLines()中的字符串行)
g、 抽绳(线条、字体、画笔。黑色、0、teModel.font*i+teModel.lineGap*
i++,StringFormat.GenericTypographic);
//绘图光标
stringToMeasure=“”;
foreach(teModel.linesRange中的字符串str(cursor.line,cursor.line+1))
stringToMeasure=str;
浮动宽度=g.MeasureString(stringToMeasure.Substring(0,cursor.pos)。替换(“”,’),
字体,0,StringFormat.GenericTypographic)宽度;
g、 抽绳(teModel.IstexSelected()?白笔:笔,宽度,
cursor.line*teModel.font+cursor.line*teModel.lineGap,width,cursor.line*teModel.font+
cursor.line*teModel.lineGap+teModel.font+teModel.lineGap*2);
}