如何在WPF中从另一个窗口调用函数

23c0lvtd  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(125)

假设我有两个窗口,第一个是managestock,第二个是add design,所以managestock的代码从我的sql server加载一个列表
这是我尝试的代码管理库代码-

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows;
using System.Windows.Controls;

namespace Test_app
{
    public partial class ManageStock : Window
    {

        DBAccess dBAccess = new DBAccess();
        DataTable dt = new DataTable();

        public ManageStock()
        {

            InitializeComponent();
            Clearlist();
            LoadList();
        }

        public void Clearlist()
        {
            dt.Clear();
            lstBox.ItemsSource = null;
            lstBox.Items.Clear();
        }
        public void LoadList()
        {
            Clearlist();
            string query = "select * from DesignTB";
            dBAccess.readDatathroughAdapter(query, dt);
            lstBox.ItemsSource = dt.DefaultView;
            dBAccess.closeConn();
        }

添加设计代码-

private void Upload(object sender, RoutedEventArgs e)
        {
            try
            {

                int dsCode = Convert.ToInt32(Name_txt.Text);
                byte[] images = null;
                FileStream stream = new FileStream(imglocation, FileMode.Open, FileAccess.Read);
                BinaryReader brs = new BinaryReader(stream);
                images = brs.ReadBytes((int)stream.Length);
                SqlCommand insertCMD = new SqlCommand("insert into DesignTB(DesignCode,DesignIMG) values(@dsCode,@images)");
                insertCMD.Parameters.AddWithValue("@dsCode", dsCode);
                insertCMD.Parameters.AddWithValue("@images", images);
                int row = dBAccess.executeQuery(insertCMD);
                if (row == 1)
                {
                    ManageStock ms = new ManageStock();
                    ms.LoadList();
                    Close();
                }
            }
            catch (Exception)
            {

                MessageBox.Show("Unsuccessful");
            }
        }
    }
}

我想在点击上传按钮后刷新lstbox,我应该怎么做?

tmb3ates

tmb3ates1#

我不知道为什么它不调用'ms.Show()'

if (row == 1)
{
    ManageStock ms = new ManageStock();
    ms.LoadList();
    Close();
}

我不知 prop 体情况,但我的回答是这样的。
如果ManageStock窗口已处于活动状态

private void Upload(object sender, RoutedEventArgs e)
{
    // your code...

    // refresh all ManageStock Window
    foreach (Window window in Application.Current.Windows)
        if (window is ManageStock manageStock)
            manageStock.LoadList();
}

.NET Framework 4.7.2

相关问题