我无法从课堂上调用我的方法

时间:2013-12-17 10:02:49

标签: c# xml

我是c#和编程

的新手

我可以使方法工作,但是当我尝试从我的班级“管理员”调用它时,它认为它只是一个小问题,但我只是卡住了...再次..没有重载方法“opretspejder”取0个参数

任何帮助我会很高兴

这是我的班级

 public class Admin   
    {
        public static void OpretSpejder(string Snavn_txt, string Senavn_txt, string Sa_txt, string Scpr_txt)
        {
            {
                if (!(string.IsNullOrEmpty(Snavn_txt)))
                    if (!(string.IsNullOrEmpty(Senavn_txt)))
                        if (!(string.IsNullOrEmpty(Sa_txt)))
                            if (!(string.IsNullOrEmpty(Scpr_txt)))
                            {
                                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;
                                Spejder.AppendChild(Navn);

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

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

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

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

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



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

                            }


            }

这里是按钮点击我想执行我的方法:

 private void button2_Click(object sender, EventArgs e)
        {

            Admin.OpretSpejder();

        }

3 个答案:

答案 0 :(得分:2)

您的方法声明说

   public static void OpretSpejder(string ..., string ...., string ...., string ....)

但是你在没有传递任何4个字符串的情况下调用它

     Admin.OpretSpejder();

当然编译器不满意

似乎方法OpretSpejder想要创建一个包含4个元素的XML文件,并且这4个元素是必需的,因为没有它们会跳过整个代码块,所以除了传递所需的4个字符串之外你别无选择

如果您是OpretSpejder的作者,那么我认为您应该知道在调用点传递什么,否则您应该向代码的作者询问这四个参数是什么

答案 1 :(得分:1)

您已使用 4个必需字符串参数声明OpretSpejder方法
(Snavn_txt,Senavn_txt,Sa_txt,Scpr_txt):

public class Admin {
  public static void OpretSpejder(string Snavn_txt, string Senavn_txt, string Sa_txt, string Scpr_txt) {

...

所以如果你想调用这个方法,你应该提供这些参数

  private void button2_Click(object sender, EventArgs e) {
    string Snavn_txt = "..."; // <- Put your real values here 
    string Senavn_txt = "...";  
    string Sa_txt = "...";  
    string Scpr_txt = "..."; 

    Admin.OpretSpejder(Snavn_txt, Senavn_txt, Sa_txt, Scpr_txt);
  } 

或者编译器建议创建一个没有参数的OpretSpejder重载版本

public class Admin {
  // New overloaded version
  public static void OpretSpejder() {
    ...
  } 

  // Old version
  public static void OpretSpejder(string Snavn_txt, string Senavn_txt, string Sa_txt, string Scpr_txt) {

...

答案 2 :(得分:0)

public partial class Form1 : System.Windows.Forms.Form
{

    public Form1()
    {
        InitializeComponent();
    }

    Admin classAdmin = new Admin();

    private void button2_Click(object sender, EventArgs e)
    {
        classAdmin.OpretSpejder("yourstring1","yourstring2","yourstring3","yourstring4");  //Admin.OpretSpejder();

    }

}