首先,对不起我的英语,它不是我的母语。我在高中一年级,在我的大学里,我们有一个为期三年的系统分析和开发证书课程,以及普通课程。我们刚刚开始在课程中学习 c#,但由于我们在实验室有一些空闲时间,我们开始“玩”winforms。我更喜欢查看代码或谷歌错误而不是询问,但这一次我真的不知道出了什么问题。
当我只使用一种表单来获取输入并实时显示所有用户的信息(没有组合框,只有标签)时,一切正常。我想要做的是,输入五个用户,如果字段填写正确,将用户的名字作为项目添加到组合框中,他可以看到以前浏览的用户的姓名/性别/年龄组合框项目。
Form1的代码:
public partial class Form1 : Form
{
Form2 frm2 = new Form2();
public Form1()
{
InitializeComponent();
}
private void label9_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
variaveis.i++;
variaveis.nome[variaveis.i] = textBox1.Text;
variaveis.sobrenome[variaveis.i] = textBox2.Text;
variaveis.sexo[variaveis.i] = comboBox1.Text;
if (textBox3.Text != null)
variaveis.idade[variaveis.i] = textBox3.Text;
double num;
bool isnum = double.TryParse(variaveis.idade[variaveis.i], out num);
Form2 frm2 = new Form2();
frm2.Update();
if (variaveis.nome[variaveis.i]!=null && variaveis.sobrenome!=null && variaveis.idade[variaveis.i] != null && isnum)
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
comboBox1.Refresh();
frm2.comboBox1.Items.Add(variaveis.nome[variaveis.i]); //Only works with the first input
if (variaveis.i == 1)
{
frm2.Show();
frm2.Location = new Point(this.Left + this.Width, this.Top);
frm2.Height = this.Height;
frm2.label6.Text = variaveis.nome[variaveis.i];
frm2.label7.Text = variaveis.sobrenome[variaveis.i];
frm2.label8.Text = variaveis.sexo[variaveis.i];
frm2.label9.Text = variaveis.idade[variaveis.i];
}
}
else
{
variaveis.i--;
MessageBox.Show("Preencha todos os campos",
"Erro");
}
if (variaveis.i >= 5)
{
button1.Enabled = false;
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
comboBox1.Refresh();
}
}
Form2的代码:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label6.Text = variaveis.nome[comboBox1.SelectedIndex + 1]; // i don't even know if i can use an array like this
label7.Text = variaveis.sobrenome[comboBox1.SelectedIndex + 1];
label8.Text =variaveis.sexo[comboBox1.SelectedIndex + 1];
label9.Text = variaveis.idade[comboBox1.SelectedIndex + 1];
}
变量类(我认为如果我使用多种形式会更容易以这种方式工作,如果我错了,请纠正我):
class variaveis
{
public static string[] nome = new string[5]; //name
public static string[] sobrenome = new string[5]; //last name
public static string[] sexo = new string[5]; //gender
public static string[] idade = new string[5]; //age(string, checked with tryparse)
public static int i = 0;
}
抱歉,如果这是一个菜鸟问题或错误很明显,但我几周前开始使用 WinForms。
编辑:所以现在的问题是: - 有时即使所有条件都明显满足,程序也会向我抛出错误。
- 不能以其他形式将项目添加到组合框。试过这个:
public void AddItem(object item)
{
comboBox1.Items.Add(variaveis.nome[variaveis.i]);
}
在 Form1 中调用它:
frm2.AddItem(variaveis.nome[variaveis.i]);
语法似乎正确,但没有任何反应。