2016-12-17 4 views
0

Я много искал для этого, но я не нашел ответа, который работает. Это то, что я ищу.Получить textbox.text формы

У меня есть окно с текстовым полем. Когда я нажимаю кнопку, я делаю экземпляр класса, а затем я хочу прочитать текст textbox.text в классе. Это то, что я пробовал:

Textbox отпуск событие (имя текстового поля = 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

Смежные вопросы