2013-12-16 6 views
3

를 형성하기 위해 클래스 내 메소드를 호출 할 수 없습니다나는 하나의 문제를 내가 해결 할 수있는

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"); 
      } 
     } 

을 나는 방법을 원하는 다른 형태의 버튼 클릭으로 실행될 수 있습니다. 그러나 그것은 내 textboxes을 인식 할 수 없습니다 .. 그것이 유일한 문제입니다.

각 인스턴스에 대해 다음과 같이 말합니다. 'Scpr_txt'이름이 현재 컨텍스트에 없습니다.

+3

포스트 코드를 버튼 클릭에서. 'OpretSpejder' 메소드가하는 일은 우리에게 중요하지 않습니다. 당신은 단순히'myAdminInstance.OpretSpejder()'를 할 수 있어야합니다. – sab669

+0

private void button2_Click (object sender, 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가있는 곳을 인식하지 못한다고 말하고 있습니다. 메서드에 텍스트 상자에 대한 참조를 전달할 수 있습니다.

첫 번째 방법은 당신의 OpretSpejder 함수에 매개 변수를 추가하는 것입니다

1

는이 일을 두 가지 방법이 있습니다.

두 번째 방법은이처럼 Form1에 공개 Form2을하는 것입니다 :

Form2 f2 = new Form2(); 

는 다음을 사용할 수 있습니다

f2.textbox1.text 
f2.textbox2.text 
... 
관련 문제