Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我能';I don’我不能从类到窗体调用我的方法_C#_Xml - Fatal编程技术网

C# 我能';I don’我不能从类到窗体调用我的方法

C# 我能';I don’我不能从类到窗体调用我的方法,c#,xml,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.IsNu

我有一个问题无法解决:

我希望我的类
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”。

我不会将表示层类与我的类耦合。您应该将文本传递给方法,而不是直接访问文本框

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

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

有两种方法:

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

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

Form2 f2 = new Form2();
然后您可以使用:

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

通过单击按钮发布代码。您的
OpretSpejder
方法在做什么对我们来说并不重要。您只需能够执行
myAdminInstance.OpretSpejder()
private void按钮2\u单击(对象发送者,事件参数e){OpretSpejder();}这是按钮代码您是否在任何地方声明了
Scpr\u txt
?@huMptyduMpty这是什么语法?