从另一个表单添加项目到listview

时间:2013-08-23 19:14:48

标签: c# class variables

我已经踩了一个问题,我花了几个小时试图解决,我的知识非常有限。

我的form1中有一个名为listMachine的listview 我在form1.cs中有一个方法,比如

private void máquinaToolStripMenuItem_Click(object sender, EventArgs e)
{
    machinename open = new machinename();
    open.Show();
}

machinename.cs是另一种形式,我使用该方法打开我的另一个表单,使用一个名为open的对象。

machinename按钮是一个简单的表单,它只是一个输入接收器,它询问一个名字,我们必须在文本框中键入它,按一个按钮然后它接收输入。

这是按下按钮时运行的代码

public void buttonAceitarnome_Click(object sender, EventArgs e)
{
    if (textBoxnomenova.TextLength == 0)
    {
        toolTipEmptyname.Show("O nome da máquina não pode estar vazio", textBoxnomenova);
    }
    else
    {
        Variables.var = textBoxnomenova.Text;
        //MessageBox.Show(Variables.var); debug purpose, the messagebox does carry variables.var text
        obj.listMachine.Items.Add(Variables.var);  //If I change the variables.var to "test" it will NOT add the item.
        this.Close();
    }
}

另外,我忘了提到我的Variables.cs类,我创建它是因为它是我发现将变量从一个类传递到另一个(machinename.cs到form1.cs)的唯一方法,但是,这些项目仍然是没有添加到列表视图中。 这是我的variables.cs代码

public static class Variables
{
    public static string var;
}

我添加到代码中的注释也为您提供了一些额外的调试信息.. 我不想要求在线帮助,但无法自行解决:(

2 个答案:

答案 0 :(得分:0)

将点击事件从私人更改为受保护。

protected void máquinaToolStripMenuItem_Click(object sender, EventArgs e)

答案 1 :(得分:0)

如果我是你,我会先删除Variables课程。 然后,你的第一个表单/类被称为obj.cs,我是对的吗?或者是form1.cs

我看起来像这样:

public partial class obj : Form
{
    public static string text; //This is a variable that can be reached from 

    public obj()
    {
        InitializeComponent();
    }

    private void máquinaToolStripMenuItem_Click(object sender, EventArgs e)
    {
        machinename open = new machinename();
        open.ShowDialog(); //I put ShowDialog instead of Show
        addItem(); //This method is called when the showed dialog is closed (machinename.cs)
    }

    private void addItem()
    {
        listMachine.Items.Add(text);
    }
}

machinename.cs类是这样的:

public partial class machinename : Form
{
    public machinename()
    {
        InitializeComponent();
    }

    private void buttonAceitarnome_Click(object sender, EventArgs e) //This one can be private
    {
        if (textBoxnomenova.TextLength == 0)
        {
            //Something here
        }
        else
        {
            obj.text = textBoxnomenova.Text; //Initializing the public static variable                
            this.Close(); //Closes the form, next step will be to run the method in obj.cs

        }
    }
}

如果我理解你的问题,你想通过“machinename.cs”形式的按钮将一个项目添加到名为“listMachine”的ListView中。这段代码就是这样做的。我希望它可以帮助你。