我做了一个程序,我在文本框中输入的数字将通过按下按钮(例如“GO”)相应地分布在每个文本框中。将显示的数字为正数,负数将被删除(不会显示)。
共有6个文本框 1输入,5输出和一个按钮。
输出应为,
输入:12
- [按GO ] -
box1:12
输入:22
- [按GO ] -
box2:22
等...
int[] posno={0,0,0,0,0};
private void gobtn_Click(object sender, EventArgs e)
{
int input;
input = Int32.Parse(num.Text);
for (int x = 0; x <= 4; x++)
{
if (input >= 0)
posno[x] = input;
num.Clear();
num.Focus();
no1.Text = posno[0].ToString();
no2.Text = posno[1].ToString();
no3.Text = posno[2].ToString();
no4.Text = posno[3].ToString();
no5.Text = posno[4].ToString();
}
}
我似乎无法相应地分配数字,有没有办法如何做到这一点?
答案 0 :(得分:1)
不是真正的答案(因为我没有看到你的代码在功能上有什么问题),但你的代码可以更清晰:
int[] posno={0,0,0,0,0};
private void gobtn_Click(object sender, EventArgs e)
{
int input;
input = Int32.Parse(num.Text);
if (input >= 0)
{
for(int x = 0; x < 5; x++)
{
posno[x] = input;
}
no1.Text = posno[0].ToString();
no2.Text = posno[1].ToString();
no3.Text = posno[2].ToString();
no4.Text = posno[3].ToString();
no5.Text = posno[4].ToString();
}
num.Clear();
num.Focus();
}
答案 1 :(得分:0)
这可能会有所不同
int[] posno={0,0,0,0,0};
int lastInput = 0;
private void gobtn_Click(object sender, EventArgs e)
{
int input = Int32.Parse(num.Text);
if (input >= 0)
{
posno[lastInput] = input;
lastInput++;
//reset counter
if (lastInput = 5)
{
lastInput = 0;
}
}
no1.Text = posno[0].ToString();
no2.Text = posno[1].ToString();
no3.Text = posno[2].ToString();
no4.Text = posno[3].ToString();
no5.Text = posno[4].ToString();
}
这是你正在寻找的吗?
答案 2 :(得分:0)
您的问题没有明确说明,但请查看我是否了解您的目标。
你有一个&#34;输入&#34; TextBox和5&#34;输出&#34;文本框。
每次点击&#34; GO&#34;按钮,输入TextBox中的值应按顺序写入输出TextBox,这意味着第一次单击GO时,该值应输出TextBox1,依此类推。
基于这个假设,这是实现这一目标的一种方法。它基于按顺序命名TextBox,例如tbOutput1,tbOutput2等。
public partial class Form1 : Form
{
private int index;
public Form1()
{
InitializeComponent();
ResetForm();
}
private void ResetForm()
{
index = 1;
}
private void button1_Click(object sender, EventArgs e)
{
TextBox tb = this.Controls.Find("tbOutput" + index.ToString(), false).OfType<TextBox>().FirstOrDefault();
if(tb!= null)
{
tb.Text = tbInput.Text;
}
index++;
if (index > 5)
ResetForm();
}
}
我也假设你想要&#34;循环&#34;所以当你达到#5时,你应该回到#1。如果没有,那么只需相应地修改代码。
因此,一般的想法是维持&#34;状态&#34;您的索引作为类成员,以便在调用按钮的单击事件处理程序之间保留它。
然后,使用ControlsCollection.Find()方法,该方法可以根据其名称找到Form控件,您将获得对与索引对应的文本框的引用。我使用了一点Linq来按摩&#34;从Find()返回到TextBox,因为Find()返回一个Control对象数组。
如果这不是你想要做的,请澄清你的问题。
干杯
答案 3 :(得分:0)
把它穿过,我的意思是:
inputbox: 10 [go] outputbox1: 10
inputbox: 2 [go] outputbox2: 2
inputbox: 4 [go] outputbox3: 4
inputbox: -2 [go] (no output)
inputbox: -3 [go] (no output)
inputbox: 33 [go] outputbox4: 33
inputbox: 46 [go] outputbox5: 46
so, the outcome will be: 10, 2, 4, 33, 46
完全理解我的问题,我的程序设计在这里:Design View
如果你不理解我的问题,我很抱歉