读书人

麻烦各位帮看几行list box的代码了多

发布时间: 2013-01-06 15:44:48 作者: rapoo

麻烦各位帮看几行list box的代码了,谢谢, 菜鸟问题。
本帖最后由 smrt_tony 于 2012-12-18 19:12:35 编辑 我想实现的功能是,在三个txtbox里面输入的名字和成绩后,在listbox里面逐行显示出名字,同时加入array或arraylist。然后我用鼠标选中listbox里面的名字,被选中的名字要分别在下面的几个label里面显示出名字,成绩,和pass or fail

问题卡在了,红色字那部分。也看不出来自己的代码哪里的问题,本人学了1年java,这学期新的paper是C#。对他的syntax完全模糊。。。

另外,student的class里面为嘛要用ToString (这个部分的ToString是按照笔记里写的,这里为什么要这么用啊,记得java里面就是 public string getName(){return name};)
请各位帮看看了。。。谢谢啦!

代码如下

(using system就省了)
namespace ARRAY
{
public partial class Form1 : Form
{
Student [] stu = new Student[10];
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
string a = textBox1.Text;
string b = textBox2.Text.ToString();
string c = textBox3.Text.ToString();

int mk1 = Convert.ToInt32(textBox2.Text);
int mk2 = Convert.ToInt32(textBox3.Text);

//listBox1.Items.Add(a + " "+ b + " " + c);
listBox1.Items.Add(a);

Student s = new Student(a,mk1,mk2);
}


private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label4.Text = listBox1.SelectedItem.ToString();

foreach(Student s in stu )
{
if (label4.Text == s.ToString())
{
label5.Text = s.ShowMarks();

if(s.hasPassed()==true)
{
label6.Text = "PASS";


}
else if(s.hasPassed()==false)
{
label6.Text = "FAIL";

}
}
}

}
}
}

student的代码如下

namespace ARRAY
{
class Student
{
private string name;
private int mark1;
private int mark2;

public Student(string aName, int MK1, int MK2)
{
name = aName;
mark1 = MK1;
mark2 = MK2;
}
(这个部分的ToString是按照笔记里写的,这里为什么要这么用啊,记得java里面就是 public string getName(){return name};)
public override string ToString()
{
return name;
}

public string ShowMarks()
{
return "(" + mark1 + "," + mark2 + ")";
}

public bool hasPassed()
{
if((mark1+mark2)/2>=10)
return true;
else
return false;
}
}
}
[解决办法]
1: Student [] stu = new Student[10];楼主如果不对这10个项赋值,那么这些项默认值为null,foreach的时候s.ToString()会报异常

2:处理办法
处理办法一:
a:楼主定义一个全局变量
static int index=0;
单击按钮时:
Student s = new Student(a,mk1,mk2);
stu[index]=s;
index++;


b:foreach()循环改为
for(int i =0;i<index;i++)
这样访问,因为后面可能还有null

处理办法二:建议采用这种办法Student [] stu = new Student[10];改为List<Student> stu=new List<Student>();
单击按钮时:
Student s = new Student(a,mk1,mk2);
stu.Add(s);
后面任然可以用foreach(),不会发生异常

读书人网 >C#

热点推荐