.net 为什么我在多行文本框中得到一个无关的回车?
我在Winforms应用程序中遇到了一个奇怪的错误,它有一个多行文本框。当我更改文本框的文本时,我得到了一个额外的换行符。此换行符的位置各不相同。例如,如果我这样做:.net 为什么我在多行文本框中得到一个无关的回车?,.net,vb.net,winforms,.net,Vb.net,Winforms,我在Winforms应用程序中遇到了一个奇怪的错误,它有一个多行文本框。当我更改文本框的文本时,我得到了一个额外的换行符。此换行符的位置各不相同。例如,如果我这样做: someTextBox.Clear() someTextBox.Text = someOtherObject.SomeTextProperty 然后我在课文的末尾得到额外的换行符。但是,如果我不首先调用clear,对SomeTextProperty使用相同的值,我会在开始时得到换行符。但是,如果我只使用像“test”这样的测试字
someTextBox.Clear()
someTextBox.Text = someOtherObject.SomeTextProperty
然后我在课文的末尾得到额外的换行符。但是,如果我不首先调用clear,对SomeTextProperty使用相同的值,我会在开始时得到换行符。但是,如果我只使用像“test”这样的测试字符串,那么不管我是否首先调用Clear(),我都会在文本的开头得到换行符。如果使用AppendText(),则在所有情况下都会在末尾插入换行符
有谁能解释这些无关的换行符/回车符来自何处,以及它们的位置有时会发生变化的原因吗?请使用.Lines()
属性,而不是.Text
。(请参阅文档。)
您不需要使用。清除;相反,只需确保所传递的数组不包含任何不需要的空字符串,因为这些字符串将转换为空行
一些示例代码:
'Set lines
Dim myLines As String() = {"Hello.", _
"My name is Inigo Montoya.", _
"", _
"You killed my father.", _
"Prepare to die."}
someTextBox.Lines = myLines
'Get lines
MsgBox(Join(someTextBox.Lines, vbCrLf))
我已经成功地测试了以上各项。如果仍然存在问题,请将代码张贴在设置值的位置(使用someOtherObject.SomeTextProperty
)或读取值的位置,因为问题可能存在。使用.Lines()
属性,而不是.Text
。(请参阅文档。)
您不需要使用。清除;相反,只需确保所传递的数组不包含任何不需要的空字符串,因为这些字符串将转换为空行
一些示例代码:
'Set lines
Dim myLines As String() = {"Hello.", _
"My name is Inigo Montoya.", _
"", _
"You killed my father.", _
"Prepare to die."}
someTextBox.Lines = myLines
'Get lines
MsgBox(Join(someTextBox.Lines, vbCrLf))
我已经成功地测试了以上各项。如果仍然存在问题,请将代码张贴在设置值的位置(使用someOtherObject.SomeTextProperty
)或读取值的位置,因为问题可能存在。使用.Lines()
属性,而不是.Text
。(请参阅文档。)
您不需要使用。清除;相反,只需确保所传递的数组不包含任何不需要的空字符串,因为这些字符串将转换为空行
一些示例代码:
'Set lines
Dim myLines As String() = {"Hello.", _
"My name is Inigo Montoya.", _
"", _
"You killed my father.", _
"Prepare to die."}
someTextBox.Lines = myLines
'Get lines
MsgBox(Join(someTextBox.Lines, vbCrLf))
我已经成功地测试了以上各项。如果仍然存在问题,请将代码张贴在设置值的位置(使用someOtherObject.SomeTextProperty
)或读取值的位置,因为问题可能存在。使用.Lines()
属性,而不是.Text
。(请参阅文档。)
您不需要使用。清除;相反,只需确保所传递的数组不包含任何不需要的空字符串,因为这些字符串将转换为空行
一些示例代码:
'Set lines
Dim myLines As String() = {"Hello.", _
"My name is Inigo Montoya.", _
"", _
"You killed my father.", _
"Prepare to die."}
someTextBox.Lines = myLines
'Get lines
MsgBox(Join(someTextBox.Lines, vbCrLf))
我已经成功地测试了以上各项。如果仍然存在问题,请将代码张贴在设置值的位置(使用someOtherObject.SomeTextProperty
)或读取值的位置,因为问题可能就在那里。我找到了答案。这也许是我没有充分解释情况的过错。但我在文本框内按enter键时触发了一个事件,并将文本框的AcceptsReturn属性设置为false。我原以为事件会在盒子里没有回车的情况下触发,因此我对回车感到困惑。但是根据,如果表单没有默认的OK按钮,您仍然会得到回车符,除非您在事件处理程序中设置e.SuppressKeyPress。这样做可以防止出现额外的回车。但是,我仍然不明白为什么在设置textbox.Lines=newstring(){“TEST”}
之后,回车符仍然存在。这对我来说似乎是一个错误
编辑:正如Josh在评论中指出的那样,回车很可能是在事件处理完毕后插入的,文本框中的文本已经更新。我找到了答案。这也许是我没有充分解释情况的过错。但我在文本框内按enter键时触发了一个事件,并将文本框的AcceptsReturn属性设置为false。我原以为事件会在盒子里没有回车的情况下触发,因此我对回车感到困惑。但是根据,如果表单没有默认的OK按钮,您仍然会得到回车符,除非您在事件处理程序中设置e.SuppressKeyPress。这样做可以防止出现额外的回车。但是,我仍然不明白为什么在设置textbox.Lines=newstring(){“TEST”}
之后,回车符仍然存在。这对我来说似乎是一个错误
编辑:正如Josh在评论中指出的那样,回车很可能是在事件处理完毕后插入的,文本框中的文本已经更新。我找到了答案。这也许是我没有充分解释情况的过错。但我在文本框内按enter键时触发了一个事件,并将文本框的AcceptsReturn属性设置为false。我原以为事件会在盒子里没有回车的情况下触发,因此我对回车感到困惑。但是根据,如果表单没有默认的OK按钮,您仍然会得到回车符,除非您在事件处理程序中设置e.SuppressKeyPress。这样做可以防止出现额外的回车。但是,我仍然不明白为什么在设置textbox.Lines=newstring(){“TEST”}
之后,回车符仍然存在。这对我来说似乎是一个错误
编辑:正如Josh在评论中指出的那样,回车很可能是在事件处理完毕后插入的,文本框中的文本已经更新。我找到了答案。这也许是我没有充分解释情况的过错。但我在文本框内按enter键时触发了一个事件,并将文本框的AcceptsReturn属性设置为false。我原以为这件事会在没有卡里亚的情况下触发