[英]how to increase array element by multiplying
Textbox2有一些60个ID,我想将其增加到250个。...所以我使用以下代码增加了元素。 当我单击大小按钮时,textbox2应该具有300个id(现在只有60个)..最近我需要将其减少到250个id
。 但它正在例外
private void Size_Click(object sender, System.EventArgs e)
{
string[] vlist = textBox1.Text.Split('\n');
int size = (Convert.ToInt32(textBox2.Text)) / Convert.ToInt32(vlist) +1;
int p = Convert.ToInt32(textBox2.Text) * size;
textBox2.Text = p.ToString();
}
请告诉我我该怎么办?
您无法更改数组大小。 如果要具有动态大小,则应使用List<T>
类的集合
...
string[] vlist = textBox1.Text.Split('\n');
int size = (Convert.ToInt32(textBox2.Text)) / Convert.ToInt32(vlist.Length) +1;
string newString = "";
for(int i=0;i<size;i++){
newString = String.Join("\n",vlist);
textBox2.Text += newString + "\n";
}
...
这样,您可以将已经到达的信息(vlist),所需的次数(大小)附加到文本框。 我还没有测试过,但是可能再次需要时会重复这些ID,在这种情况下,请从大小变量定义中删除“ +1”
对于减少到250,您应该指定要遵循的条件...如果它们只是前250个条件,则可以轻松地在for循环中使用250作为中断条件/最高值来做到这一点。
private void Size_Click(object sender, System.EventArgs e)
{
List<string> vlist = new List<string>(textBox2.Text.Split('\n'));
int currentLineNumber = vlist.Count;
int targetLineNumber = Int32.Parse(textBox1.Text);
if (targetLineNumber == currentLineNumber)
return; //nothing to change
else if (targetLineNumber > currentLineNumber) //increase number of line
{
for (int i = currentLineNumber; i < targetLineNumber; ++i)
vlist.Add(vlist[(i - currentLineNumber) % currentLineNumber]);
}
else //reduce number of line
vlist = vlist.GetRange(0, targetLineNumber);
if (vlist.Count == 0)
textBox2.Text = String.Empty;
else
{
string result = vlist[0];
for (int i = 1; i < targetLineNumber; ++i)
result += String.Format("\n{0}", vlist[i]);
textBox2.Text = result;
}
}
逻辑很简单。 首先,获取textbox1中的行号和textbox2中的目标行号。 (这假设textbox1不为空)
为了增加大小,我们一直将id添加到列表中,直到达到目标大小为止。 为了减小尺寸,它甚至更简单,只需从列表中选择前N行即可。 调整大小后,只需将所有行重新连接在一起,然后将textBox1.Text设置为它即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.