使用列表框来显示类的项目
问题描述:
我的程序编译,对我来说它是有道理的。使用列表框来显示类的项目
我想知道如何让'名字'列表在我的列表框中。
我想使用一个类的数组,所以我可以添加推销员。每次添加人员时都会创建一个新班级。
这样的名称是调用该类中所有数据的方式。
当我执行程序一切看起来像它做什么,它该做的,但是当我按下列表名称按钮,它只是列出了“form1的”列表框中
这就是我的意思是:
我哪里错了?
SalesmanClass
namespace WindowsFormsApplication1
{
class SalesmanClass
{
private string name;
public string cNum;
public string Email;
public string address;
public string gArea;
public int tSales;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
表1
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Form2 w2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (w2 == null)
{
w2 = new Form2();
w2.Show();
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Object names;
names = Name;
listBox1.Items.Add(Name);
}
}
}
表2
//form2
namespace WindowsFormsApplication1
public partial class Form2 : Form
{
SalesmanClass[] salesman = new SalesmanClass[] { };
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim().Length != 0)
{
for (int i = 0; i > salesman.Length; i++)
{
if (salesman[i] == null)
{
salesman[i].Name = textBox1.Text;
break;
}
}
this.Close();
}
else
{
MessageBox.Show("Please Input a Name");
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
}
}
答
在这种方法中:
private void button2_Click(object sender, EventArgs e)
{
Object names;
names = Name; // <--- Using this.Name, i.e. Form.Name, NOT SalesmanClass.Name
listBox1.Items.Add(Name);
}
你不小心使用窗体本身(这自然是 “Form1的”)的Name
财产。
此时您需要有一个SalesmanClass
对象,并使用的Name
属性代替。
您目前没有Form1中的推销员列表,因此您需要添加一个并使用它。
另外,如果您有SalesmanClass
对象列表或数组,你应该向他们创造一个List<string>
并用它来初始化列表框,像:
SalesmanClass[] salesmen = new SalesmanClass[] {};
// ...
List<string> names = new List<string>();
foreach (var salesman in salesmen)
names.Add(salesman.Name);
listBox1.Items.AddRange(names);
为此,您可以使用LINQ过,但我不想通过将其引入混音来混淆你!
答
在你button2_Click,您有:
names = Name;
是什么名称属于哪一种?我怀疑它属于Form1,这就是它显示“form1”的原因。如果是这样的话,你只需要获得你的SalesmanClass对象并从中获取Name。
ahh好吧,我如何参考我在Form 2中使用的同一个SalesmanClass? – 2013-05-02 08:28:31
谢谢你这么多,我现在要改变它 – 2013-05-02 08:38:52
@BobJones“我如何引用相同的SalesmanClass,我在表单2中使用”:答案:有很多方法,但我可能会添加一个公共方法,称为'SetSalesmen(SalesmanClass []推销员)'这两个表单类,以便创建这两个表单的类可以将列表传递给两个表单类 - 如果你明白我的意思! – 2013-05-02 08:43:09