2015-10-08 1 views
0

пытается получить данные из основной формы в форму 2. Основная форма имеет текстовое поле и кнопку. при нажатии кнопки открывается форма 2, которая отображает данные, введенные в основной форме, в виде серии текстовых блоков.Передача данных между двумя форматами wpf как строки

Однако я не могу получить данные для передачи между формами. код ниже. Может ли кто-нибудь помочь или предложить что-нибудь, что я могу сделать по-другому?

WPF 1 Основная форма:

public partial class MainWindow : Window 
{ 



    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void btnOpenForm_Click(object sender, RoutedEventArgs e) 
    { 
     //btnset: Takes the values contained in the text boxes and updates 
     //the student class 
     //properties. 
     Student.sFname = firstname.Text; 
     Student.sSname = secondname.Text; 
     Window1 details = new Window1(); 
     details.Show(); 
    } 

WPF 2 Код:

public partial class Window1 : Window 
{ 
    public Window1() 
    { 
     InitializeComponent(); 
    } 

    private void details_Load(object sender, EventArgs e) 
    { 
     Fname.Text = Student.sFname; 
     Sname.Text = Student.sSname; 
    } 
    private void Close_Click(object sender, RoutedEventArgs e) 
    { 
     this.Close(); 
    } 
} 

ответ

1

Есть несколько способов, чтобы "передать данные" между 2 классов. Самый простой способ - разоблачить свойство или метод на Window1 и просто установить необходимый текст. Другой способ - создать конструктор в Window1, который принимает данные в качестве параметров. Вот код, демонстрирующий эти подходы.

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var c1 = new Class1(); 

     c1.DoStuff(); 
    } 
} 

public class Class1 
{ 
    public void DoStuff() 
    { 
     var c = new Class2("stuff"); 

     var c2 = new Class2(); 
     c2.AcceptStuff("stuff2"); 

     c.Print(); 
     c2.Print(); 

     c2.MyData = "stuff3"; 
     c2.Print(); 
    } 
} 

public class Class2 
{  
    private string _myData; 

    public Class2() 
    { 

    } 

    public Class2(string myData) 
    { 
     _myData = myData; 
    }   

    public string MyData 
    { 
     set { _myData = value;} 
    } 

    public void AcceptStuff(string myData) 
    { 
     _myData = myData; 
    } 

    public void Print() 
    { 
     Console.WriteLine(_myData); 
    } 
} 

Печать

stuff 
stuff2 
stuff3 
0

Я предполагаю, что у вас есть класс в MainWindow как:

`Public class Student 
{ 
public static string sFname; 
public static string sSname; 
}` 

При нажатии открытой кнопки вы присваивая значения этих переменных, но если вы хотите доступ к ним в другом окне означает имя окна, а затем имя класса. Проверьте этот код, если он работает?

`public partial class Window1 : Window 
{ 
public Window1() 
{ 
    InitializeComponent(); 
} 

private void details_Load(object sender, EventArgs e) 
{ 
    Fname.Text = MainWindow.Student.sFname; 
    Sname.Text = Mainwindow.Student.sSname; 
} 
private void Close_Click(object sender, RoutedEventArgs e) 
{ 
    this.Close(); 
} 
}` 
+0

спасибо, что я установил ответ, чтобы показать вам, что мой класс учеников все еще не повезло, что он работает, хотя – bdg

+0

Попробуйте удалить свойства get set, просто сохраните статическую строку в своем классе, как я написал выше. Не забудьте указать MainWindow перед доступом к переменным класса ученика. Посмотрите, работает ли это. –

0

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

class Student 
{ 
    static string nFname, nSname; 
    public static string sFname 
    { 
     get 
     { 
      return nFname; 
     } 
     set 
     { 
      nFname = value; 
     } 
    } 
    public static string sSname 
    { 
     get 
     { 
      return nSname; 
     } 
     set 
     { 
      nSname = value; 
     } 
    } 
} 

Я попробовал этот код, и он по-прежнему обыкновению присвоить значения.

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