0

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

我的 form1 中有一个名为 listMachine 的列表视图,并且我在 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;
}

我添加到代码中的注释还为您提供了一些额外的调试信息。我不想寻求在线帮助,但我自己无法解决这个问题:(

4

2 回答 2

0

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

protected void máquinaToolStripMenuItem_Click(object sender, EventArgs e)
于 2013-08-23T19:24:48.237 回答
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”形式的按钮向 ListView 添加一个名为“listMachine”的项目。这段代码将做到这一点。我希望它对你有帮助。

于 2013-08-23T20:15:24.567 回答