我坚持使用这个计算器。
我有一个带有多行选项的大文本框。
我想点击按钮1并在我的文本框的第二个 行中打印第一个。 为此,我唯一能找到的是:
Select Case CType(sender, System.Windows.Forms.Button).Name
Case "Btn1"
TextBox1.Text = Environment.NewLine
TextBox1.Text += CStr(1)
'.....
End Select
但如果数字需要是" 11"因此我必须多次点击同一个按钮,甚至是#34; 13"如果我单击另一个数字,则整个文本将更改为该特定数字。我想连接我的文本框的第二行。
我想保存第一行以供日后使用
如果我试试 TextBox1.Lines(1)=" 1" 我收到以下错误"索引超出了数组的范围"
我已经和你呆了几天了,请帮我一把。
答案 0 :(得分:0)
创建一个仅包含数字字符串的变量(例如,s
),例如" 1"," 11"或&#34 ; 137327&#34 ;.
单击要附加到数字字符串的数字时,将其与换行符分配给文本框:
s &= CStr(n)
TextBox1.Text = Environment.NewLine & s
在文本框中要求空白行似乎是不标准的。确保你真正想做的事。
答案 1 :(得分:0)
你可以这样做:
Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles Btn1.Click, Btn2.Click, _
Btn3.Click, Btn4.Click, Btn5.Click, Btn6.Click, Btn7.Click, Btn8.Click, Btn9.Click, Btn0.Click
Dim lines As New List(Of String)(TextBox1.Lines)
While lines.Count < 2
lines.Add("")
End While
lines(1) = lines(1) & DirectCast(sender, Button).Text
TextBox1.Lines = lines.ToArray
End Sub
回答评论中的问题:
为什么我需要使用字符串数组而不是仅使用 我文本框的第二行?
TextBox的行内部存储在Array中。这就是微软决定如何实施它的原因。遗憾的是,如果您尝试访问索引之外的位置(大于其最初声明的大小),则数组的大小不会自动增大。因此,如果你的TextBox中已经没有第二行,那么你将访问一个超出界限的索引。导致错误。我使用的是列表,它可以增长到您需要的大小。我使用内部数组的内容初始化List,然后向其中添加空行以确保它至少有两行。此方法将保留TextBox中已有的行。一旦我确定List至少有两行,访问第二行并修改它是安全的。构建List并修改第二行后,我将其转换回Array并将其重新分配给TextBox。