Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么当我在C#表单中添加更多字符时,绘制的字符串会发生变化?_C#_String_Forms_Notepad - Fatal编程技术网

为什么当我在C#表单中添加更多字符时,绘制的字符串会发生变化?

为什么当我在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

因此,我需要在C#Forms中只使用drawString、drawsline等创建一个文本编辑器

当我键入文本时,文本会发生变化,这导致文本光标无法正确显示,因为它取决于我通过MeasureString()计算的文本宽度

以下是我编写文本和绘制光标的函数:

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);
}