Помещение информации из одного окна в сетку данных в другом окне без использования базы данных - PullRequest
2 голосов
/ 11 марта 2020

Итак, в моем главном окне с сеткой данных должна быть кнопка «добавить клиента», и она выведет вас в новое окно, и в этом окне будет запрошена информация о клиенте, который скоро станет клиентом, и если я нажму кнопку «сохранить», должен закрыть окно и поместить информацию в сетку данных на моем MainWindow, и я пробовал много вещей, но я не могу понять, как это правильно, и я использую wpf

public partial class GetInfo : Window
{


    public GetInfo()
    {
        InitializeComponent();
    }
    public class Client
    {
        public string name { get; set; }

        public string address { get; set; }

    }

    private void SaveBT_Click(object sender, System.EventArgs e)
    {

        MainWindow main = new MainWindow();

        Client addClient = new Client();
        addClient.name = NameTB.Text;
        addClient.address = AddressTB.Text;
        main.DataGridXAML.Items.Add(addClient);
        this.Close();



    }
}




public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.WindowStartupLocation = WindowStartupLocation.CenterScreen;
    }

    private void LogOut_Click(object sender, RoutedEventArgs e)
    {
        LoginScreen logout = new LoginScreen();
        logout.Show();
        Close();
    }

    private void AddClient_Click(object sender, RoutedEventArgs e)
    {
        GetInfo infoget = new GetInfo();
        infoget.Show();
    }

}

1 Ответ

0 голосов
/ 11 марта 2020

Похоже, что ваш GetInfo работает как диалог.

Вы можете сохранить информацию в GetInfo и получить информацию после того, как пользователь выберет закрытое.

В вашем MainWindow

private void AddClient_Click(object sender, RoutedEventArgs e)
{
    GetInfo infoget = new GetInfo();
    infoget.ShowDialog();
    if( get.DialogResult != true ) {
        return;
    }
    main.DataGridXAML.Items.Add(addClient);
}

In GetInfo

public partial class GetInfo : Window
{
    public GetInfo()
    {
        InitializeComponent();
    }
    public class Client
    {
        public string name { get; set; }

        public string address { get; set; }
    }

    // Save info in window as a property.
    public Client Info { get; set; }
    private void SaveBT_Click(object sender, System.EventArgs e)
    {
        Client addClient = new Client();
        addClient.name = NameTB.Text;
        addClient.address = AddressTB.Text;
        Info = addClient;
        DialogueResult = true;
    }
}

Что не так с вашим исходным кодом? Посмотрите на комментарии ниже.

private void SaveBT_Click(object sender, System.EventArgs e)
{
    // This is the problem, this main is NOT your actual instance of MainWindow which calls this GetInfo.
    MainWindow main = new MainWindow();

    Client addClient = new Client();
    addClient.name = NameTB.Text;
    addClient.address = AddressTB.Text;
    main.DataGridXAML.Items.Add(addClient);
    this.Close();
    // After this command, main is not getting used anymore, so you get nothing in your actual MainWindow
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...