Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WPF在变量更改或按钮单击时在两个窗口之间传递数据_C#_.net_Wpf - Fatal编程技术网

C#WPF在变量更改或按钮单击时在两个窗口之间传递数据

C#WPF在变量更改或按钮单击时在两个窗口之间传递数据,c#,.net,wpf,C#,.net,Wpf,我目前正在使用WPF进行一个C语言的小项目,我需要在两个窗口之间传递数据(如下所示)。我可以使用类传递数据,但我想在文本框“Tb_kunden_id”(窗口一)中显示数据,点击“Btn_kunde_hinzufügen click”(窗口二)或者每当变量“kunden\u id\u chaged”(变量在类中)更改时。数据的输入在项目列表中单击按钮(Btn\u kunde\u hinzufügen\u单击按钮)时更改。是否需要添加XAML 窗口1: public partial class be

我目前正在使用WPF进行一个C语言的小项目,我需要在两个窗口之间传递数据(如下所示)。我可以使用类传递数据,但我想在
文本框
“Tb_kunden_id”
(窗口一)中显示数据,点击
“Btn_kunde_hinzufügen click”
(窗口二)或者每当变量
“kunden\u id\u chaged”
(变量在类中)更改时。数据的输入在项目列表中单击按钮(
Btn\u kunde\u hinzufügen\u单击按钮)时更改。是否需要添加XAML

窗口1:

public partial class bestellung_hinzufügen : Window
{
    string login = Login_info.login;
    string datum = "";
    int m_id_auslesen = 0;

    public bestellung_hinzufügen()
    {
        InitializeComponent();

        NpgsqlConnection connection = new NpgsqlConnection(login);
        try
        {
            connection.Open();
        }

        catch
        {
            MessageBox.Show("faild");
        }
         //Some SQL in here
    }


    private void Btn_kunde_suchen_Click(object sender, RoutedEventArgs e)
    {
        //I am opening the Window for new Input
        Auswahl_kunde_bestellung auswahl_Kunde_Bestellung = new Auswahl_kunde_bestellung();
        auswahl_Kunde_Bestellung.Show();
    }

    private void Btn_abbrechen_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }


}

//Class that passes the data between different windows
public static class Informationen_bestellungen
{
    public static string kunden_id;
    public static bool kunden_id_chaged = false;
}
  public partial class Auswahl_kunde_bestellung : Window
 {
    string login = Login_info.login;
    string suchanfrage = "";

    public Auswahl_kunde_bestellung()
    {
        InitializeComponent();
    }

    private void Btn_suchen_Click(object sender, RoutedEventArgs e)
    {
        //What I am adding to the list
        suchanfrage = Tb_suchanfrage_kunde.Text;
        Liste_ausgabe_kunden.Items.Clear();
        if (Combo_auswahl_kunde.SelectedIndex == 0)
        {
            string command_text = "select * from tbl_kunde where k_id >= '" + suchanfrage + "' order by k_id;";
            Ausgabe_kunde(command_text);
        }

        if (Combo_auswahl_kunde.SelectedIndex == 1)
        {
            string command_text = "select * from tbl_kunde where name like '" + suchanfrage + "%' order by k_id;";
            Ausgabe_kunde(command_text);
        }           
    }
    //Where I want it to update
    private void Btn_kunde_hinzufügen_Click(object sender, RoutedEventArgs e)
    {
        if (Liste_ausgabe_kunden.SelectedIndex != -1)
        {
            string delete = Liste_ausgabe_kunden.SelectedItem.ToString();
            string[] split_delete = delete.Split();
            //the next line I want to show in the TextBox
            Informationen_bestellungen.kunden_id = split_delete[0];
            Informationen_bestellungen.kunden_id_chaged = true; 
            //Where the TextBox should be changed
            this.Close();
        }
    }

    private void Btn_abbrechen_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }

    private void Ausgabe_kunde(string command_text)
    {
       //Some more SQL
    }        
}
窗口2:

public partial class bestellung_hinzufügen : Window
{
    string login = Login_info.login;
    string datum = "";
    int m_id_auslesen = 0;

    public bestellung_hinzufügen()
    {
        InitializeComponent();

        NpgsqlConnection connection = new NpgsqlConnection(login);
        try
        {
            connection.Open();
        }

        catch
        {
            MessageBox.Show("faild");
        }
         //Some SQL in here
    }


    private void Btn_kunde_suchen_Click(object sender, RoutedEventArgs e)
    {
        //I am opening the Window for new Input
        Auswahl_kunde_bestellung auswahl_Kunde_Bestellung = new Auswahl_kunde_bestellung();
        auswahl_Kunde_Bestellung.Show();
    }

    private void Btn_abbrechen_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }


}

//Class that passes the data between different windows
public static class Informationen_bestellungen
{
    public static string kunden_id;
    public static bool kunden_id_chaged = false;
}
  public partial class Auswahl_kunde_bestellung : Window
 {
    string login = Login_info.login;
    string suchanfrage = "";

    public Auswahl_kunde_bestellung()
    {
        InitializeComponent();
    }

    private void Btn_suchen_Click(object sender, RoutedEventArgs e)
    {
        //What I am adding to the list
        suchanfrage = Tb_suchanfrage_kunde.Text;
        Liste_ausgabe_kunden.Items.Clear();
        if (Combo_auswahl_kunde.SelectedIndex == 0)
        {
            string command_text = "select * from tbl_kunde where k_id >= '" + suchanfrage + "' order by k_id;";
            Ausgabe_kunde(command_text);
        }

        if (Combo_auswahl_kunde.SelectedIndex == 1)
        {
            string command_text = "select * from tbl_kunde where name like '" + suchanfrage + "%' order by k_id;";
            Ausgabe_kunde(command_text);
        }           
    }
    //Where I want it to update
    private void Btn_kunde_hinzufügen_Click(object sender, RoutedEventArgs e)
    {
        if (Liste_ausgabe_kunden.SelectedIndex != -1)
        {
            string delete = Liste_ausgabe_kunden.SelectedItem.ToString();
            string[] split_delete = delete.Split();
            //the next line I want to show in the TextBox
            Informationen_bestellungen.kunden_id = split_delete[0];
            Informationen_bestellungen.kunden_id_chaged = true; 
            //Where the TextBox should be changed
            this.Close();
        }
    }

    private void Btn_abbrechen_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }

    private void Ausgabe_kunde(string command_text)
    {
       //Some more SQL
    }        
}

提前感谢!

您可能还需要其他东西,因此请准备好您的设计。为主窗口创建一个ViewModel,此ViewModel将协调其他窗口的两个ViewModel之间的数据传递。是的,请使用XAML和数据绑定,因为这是WPF的功能所在。添加代码块s到段落内的代码