2013-12-16 2 views
3

Я одна проблема, которую я не могу исправить:я не могу назвать свой метод из класса, чтобы сформировать

Я хочу, чтобы мой класс 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

Post код из кнопки. Для нас не имеет значения, что делает ваш метод «OpretSpejder». Вы должны просто быть в состоянии сделать 'myAdminInstance.OpretSpejder()' – sab669

+0

private void button2_Click (отправитель объекта, EventArgs e) { OpretSpejder(); } Это код кнопки – Max

+0

Вы объявили 'Scpr_txt' в любом месте? – Harrison

ответ

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

+1, Это точный подход, который я использую для передачи текста. – KSdev

0

Он пытается сказать вам, что он не знает, где находится TextBox. Вы можете передать ссылку на текстовое поле в метод.

1

Есть два способа сделать это:

первый способ заключается в добавлении параметров к вашему OpretSpejder функции.

второй способ сделать публичное Form2 в вашем Form1, как это:

Form2 f2 = new Form2(); 

, то вы можете использовать:

f2.textbox1.text 
f2.textbox2.text 
... 
Смежные вопросы