0

我的程序可以编译,对我来说这很有意义。

我想知道如何让“名称”在我的列表框中列出。

我正在尝试使用一系列类,以便添加推销员。每次添加人员时都会创建一个新类。

这样,名称就是调用该类中所有数据的一种方式。

当我执行程序时,一切看起来都在做它应该做的事情,但是当我按下列表名称按钮时,它只是在列表框中列出了“form1”

这就是我的意思:

我哪里错了?

推销员班

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)
    {

    }
}
}
4

2 回答 2

1

在这种方法中:

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);
}

您不小心使用了NameForm 本身的属性(自然是“form1”)。

此时您需要有一个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 来做到这一点,但我不想通过将它引入到组合中来混淆你!

于 2013-05-02T08:27:10.643 回答
1

在您的 button2_Click 中,您有:

names = Name;

这个名字属于什么?我怀疑它属于 Form1,这就是它一直显示“form1”的原因。如果是这种情况,您只需要获取 SalesmanClass 对象并从中获取名称。

于 2013-05-02T08:31:31.510 回答