2013-12-16 78 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

郵政代碼從按鈕的點擊。對我們來說,你的'OpretSpejder'方法在做什麼並不重要。你應該簡單地能夠執行'myAdminInstance.OpretSpejder()' – sab669

+0

private void button2_Click(object sender,EventArgs e) { OpretSpejder(); } 這是按鈕代碼 – Max

+0

您是否在任何地方聲明瞭'Scpr_txt'? – Harrison

回答

2

我不會將表示層類與我的類耦合。不要直接訪問文本框,而應將文本傳遞給方法。

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功能。

的第二種方法是做一個公開的Form2Form1這樣的:

Form2 f2 = new Form2(); 

那麼你可以使用:

f2.textbox1.text 
f2.textbox2.text 
... 
相關問題