通过文本框分配相应的正数
本文关键字:分配 文本 | 更新日期: 2023-09-27 18:17:00
我编写了一个程序,使我在文本框上输入的数字按下一个按钮(例如"GO"),就会相应地分布在每个文本框中。将显示的数字将是正数,而负数将被删除(将不显示)。
共有6个文本框1路输入,5路输出和一个按钮。
输出应该是,
输入:12(<<p> - em>按去]——
box1: 12
输入:22(<<p> - em>按去]——
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();
}
}
我似乎无法相应地分配数字,有什么方法可以做到这一点吗?
不是真正的答案(因为我不知道你的代码在功能上有什么问题),但你的代码可以更清晰:
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();
}
可以用不同的方式来完成
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();
}
这是你要找的吗?
你的问题没有说得很清楚,但是让我看看我是否理解了你想要达到的目的。
你有一个"输入"文本框和5个"输出"文本框。
您希望每次单击"GO"按钮时,输入文本框中的值应按顺序写入输出文本框,这意味着您第一次单击GO时,值应转到输出TextBox1,依此类推。
基于这个假设,有一种方法可以实现这一点。它是基于你的文本框顺序命名,如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();
}
}
我还假设你想要"循环",这样当你到达第5条时,你就应该回到第1条。如果没有,那么只需相应地修改代码。
因此,一般的想法是将索引的"状态"作为类成员来维护,以便在调用按钮的click事件处理程序之间保留它。
然后,使用ControlsCollection.Find()方法(该方法可以根据窗体控件的名称查找窗体控件),您将获得对索引对应的文本框的引用。我使用了一点Linq来"按摩"从Find()返回到一个文本框,因为Find()返回一个Control对象数组。
如果这不是你想要做的,请澄清你的问题。
欢呼
我的意思是:
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
为了充分理解我的问题,我的程序设计如下:
如果你没有理解我的问题,我很抱歉