我无法从类到表单调用我的方法

时间:2013-12-16 17:46:45

标签: c# xml

我有一个问题我无法解决:

我希望我的班级admin包含此方法:

public void OpretSpejder()
{
    if (!(string.IsNullOrEmpty(Snavn_txt.Text)))
        if (!(string.IsNullOrEmpty(Senavn_txt.Text)))
            if (!(string.IsNullOrEmpty(Sa_txt.Text)))
                if (!(string.IsNullOrEmpty(Scpr_txt.Text)))
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(@"Spejder.xml");

                var nodeCount = 0;
                using (var reader = XmlReader.Create(@"Spejder.xml"))
                {
                    while (reader.Read())
                    {
                        if (reader.NodeType == XmlNodeType.Element &&
                            reader.Name == "Spejder")
                        {
                            nodeCount++;
                        }
                    }
                }

                nodeCount++;

                XmlElement Spejder = doc.CreateElement("Spejder");
                Spejder.SetAttribute("ID", nodeCount.ToString());

                XmlNode Navn = doc.CreateElement("Navn");
                Navn.InnerText = Snavn_txt.Text;
                Spejder.AppendChild(Navn);

                XmlNode Efternavn = doc.CreateElement("Efternavn");
                Efternavn.InnerText = Senavn_txt.Text;
                Spejder.AppendChild(Efternavn);

                XmlNode Alder = doc.CreateElement("Alder");
                Alder.InnerText = Sa_txt.Text;
                Spejder.AppendChild(Alder);

                XmlNode Cpr = doc.CreateElement("Cpr");
                Cpr.InnerText = Scpr_txt.Text;
                Spejder.AppendChild(Cpr);

                doc.DocumentElement.AppendChild(Spejder);
                doc.Save(@"Spejder.xml");

                Snavn_txt.Text = String.Empty;
                Senavn_txt.Text = String.Empty;
                Sa_txt.Text = String.Empty;
                Scpr_txt.Text = String.Empty;

                MessageBox.Show("Spejder Oprettet");
            }
        }

我希望该方法在另一种形式的按钮单击中执行。但它无法识别我的文本框..这是唯一的问题。

对于每个实例,它只是说:当前上下文中不存在名称“Scpr_txt”。

3 个答案:

答案 0 :(得分:2)

我不会将表示层类与我的类结合起来。您不应直接访问TextBox,而应将文本传递给方法。

public void OpretSpejder(string Snavn_txt, string Sa_txt, string Scpr_txt )
{
    if (!(string.IsNullOrEmpty(Senavn_txt)))
        if (!(string.IsNullOrEmpty(Sa_txt)))
            if (!(string.IsNullOrEmpty(Scpr_txt)))
            {

答案 1 :(得分:1)

有两种方法可以做到这一点:

第一种方法是向OpretSpejder函数添加参数。

第二种方法是在Form2中公开Form1,如下所示:

Form2 f2 = new Form2();

然后你可以使用:

f2.textbox1.text
f2.textbox2.text
...

答案 2 :(得分:0)

它试图告诉您它无法识别TextBox的存在位置。您可以将对文本框的引用传递给方法。