2016-12-17 43 views
0

我搜索了很多,但我没有找到一个有效的答案。这就是我想要的。获取一个表格的textbox.text

我有一个带有文本框的窗口。当我按下按钮时,我创建了一个类的实例,然后我想将te textbox.text读入类中。 这是我的尝试:

文本框离开事件(Name文本= textBox_klantnaam):

klantNaam = textBox_klantnaam.Text; 

在相同的形式,我有一个属性:

public string klantNaam 
{ 
    get { return textBox_klantnaam.Text; } 
    set { textBox_klantnaam.Text = value; } 
} 

的onclick按钮:

private void button1_Click(object sender, EventArgs e) 
{ 
    Class_licentiemanager SchrijfLicentieBestand = new Class_licentiemanager(); 
    SchrijfLicentieBestand.schrijfLicBestand(); 
} 

需要读取textbox.text然后将其写入fi的类le 财产“klantNaam”似乎是空的?

namespace Opzet_Leeg_Framework 
{ 
    class Class_licentiemanager 
    { 
     Class_Logging logging = new Class_Logging(); 
     public static Form_Licentiemanager Licentiemanager = new Form_Licentiemanager(); 

     public void schrijfLicBestand() 
     { 

      using (StreamWriter w = new StreamWriter(Settings.applicatiePad + Form1.SettingsMap + Form1.Applicatienaam + ".lic")) 
       try 
       { 
        try 
        { 
         w.WriteLine("test line, works fine"); 
         w.WriteLine("Naam klant : " + Licentiemanager.klantNaam); //Empty , no line ??? 
        } 
        catch (Exception e) 
        { 
         logging.witeToLog("FOUT", "Het opslaan van het licentiebestand is mislukt", 1); 
         logging.witeToLog("FOUT", "Melding : ", 1); 
         logging.witeToLog("FOUT", e.ToString(), 1); 
        } 
       } 
       finally 
       { 
        w.Close(); 
        w.Dispose(); 
       } 
     } 
    } 
} 

回答

2

您需要将该值传递给该类,而不是在其中创建另一个表单实例。当您编写new Form_Licentiemanager时,您将创建该表单的新实例并且不会重复使用同一个实例,因此该新实例上的值仍为空。为了解决这个问题,请执行下列操作:

private void button1_Click(object sender, EventArgs e) 
{ 
    Class_licentiemanager SchrijfLicentieBestand = new Class_licentiemanager(); 
    SchrijfLicentieBestand.schrijfLicBestand(klantNaam); 
} 

,改变你的代码:

class Class_licentiemanager 
{ 
    Class_Logging logging = new Class_Logging(); 
    public void schrijfLicBestand(string klantNaam) 
    { 
     // same code here ...... 
        w.WriteLine("test line, works fine"); 
        w.WriteLine("Naam klant : " + klantNaam); 
     // same code here ...... 
    }   
} 
+0

非常感谢,这个工程。 – Hansvb