2015-04-13 2 views
0

Form1.csКак сохранить возвращаемую переменную из одного класса в другую переменную класса?

public String Return_inf() 
{ 
    names = U_name.Text; 
    return names; 
} 

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

public string CheckLogin() 
{ 
    Form1 f = new Form1(); 
    string name=f.Return_inf(); 
} 

Но переменная пуста ....

+0

Где вы получаете значение в 'U_name.Text'? – Johnrad

+0

Это значение, которое извлекается из textBox – user3575275

+0

Просто для того, чтобы найти причину ... Попробуйте присвоить имена в свой метод 'Return_inf()' что-то постоянное. Посмотрите, работает ли это, если это произойдет, тогда мы знаем, что проблема заключается в чтении этого текстового поля. – Johnrad

ответ

0

вы можете сделать это определение статического класса следующим образом:

static class GlobalClass 
{ 
    private static string U_name= ""; 

    public static string U_name 
    { 
     get { return U_name; } 
     set { U_name= value; } 
    } 
} 

и вы можете использовать его как низкий

GlobalClass.U_name="any thing"; 

, а затем вспомнить, как этого

string name=GlobalClass.U_name; 
+0

Я считаю, что он использует веб-форму и пытается получить значение 'U_Name' из текстового поля. – Johnrad

+0

[Почему такое глобальное государство такое зло?] (Http://programmers.stackexchange.com/questions/148108/why-is-global-state-so-evil) – dcastro

1

Причины переменное имя является пустым, потому что вы создаете совершенно новый объект Form1 в вашем CheckLogin() метод, вместо использования уже существующий объект Form1.

Возможно, у ваших классов есть ссылки друг на друга.

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

Form1:

public class Form1 : Form 
{ 
    // Class variable to have a reference to Form2 
    private Form2 form2; 

    // Constructor 
    public Form1() 
    { 
     // InitializeComponent is a default method created for you to intialize all the controls on your form. 
     InitializeComponent(); 

     form2 = new Form2(this); 
    } 

    public String Return_inf() 
    { 
     names = U_name.Text; 
     return names; 
    } 
} 

Form2 класс:

public class Form2 : Form 
{ 
    // Class variable to have a reference back to Form1 
    private Form1 form1; 

    public Form2(Form1 form1) 
    { 
     InitializeComponent(); 
     this.form1 = form1; 
    } 

    public string CheckLogin() 
    { 
     // There is no need to create a Form1 object here in the method, because this class already knows about Form1 from the constructor 
     string name=form1.Return_inf(); 

     // Use name how you would like 
    } 
} 

Есть другие способы сделать это, но ИМО это будет основой обмена данными между двумя формами.

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