Формы моего окна сбрасываются на значения по умолчанию каждый раз, когда я его скрываю - PullRequest
0 голосов
/ 06 января 2019

Мне нужно создать простую систему инвентаризации без базы данных. Однако мои формы продолжают сбрасываться до значений по умолчанию после их скрытия и отображения.

Я несколько раз пытался реструктурировать свой код и использовать this.visibility вместо this.show

    //Code for my main window
    public Main()
    {
        InitializeComponent();
    }


    private void Button_Click(object sender, RoutedEventArgs e)
    {
        AddTransactionWindow AddTransWindow = new AddTransactionWindow();
        AddTransWindow.Show();
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        Inventory OpenInventory = new Inventory();
        OpenInventory.Visibility = Visibility.Visible;
        this.Visibility = Visibility.Hidden;
    }

// Код для моего инвентарного окна

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

    private void Save_Click(object sender, RoutedEventArgs e)
    {
        bool positiveNumbericalInput = true;
        string selectedJewelry;
        int amountAdded;
        //object selectedJewelry = cmbTypeofJewelry.SelectedItem;
        //Object selectedItem = cmbTypeofJewelry.SelectedItem;
        selectedJewelry = cmbTypeofJewelry.Text;

        if (txtAmount.Text == "")
        {
            positiveNumbericalInput = false;
            txtAmount.Text = "0";
        }

        amountAdded = Convert.ToInt32(txtAmount.Text);

        if (positiveNumbericalInput)
        {
            int existingAmount;
            switch (selectedJewelry)
            {
                case "Diamond":
                    existingAmount = Convert.ToInt32(amntDiamond.Text);
                    existingAmount = existingAmount + amountAdded;
                    amntNecklace.Text = existingAmount.ToString();
                    break;

                case "Pink Diamond":
                    existingAmount = Convert.ToInt32(amntPinkDiamond.Text);
                    existingAmount = existingAmount + amountAdded;
                    amntEarrings.Text = existingAmount.ToString();
                    break;

                case "Sapphire":
                    existingAmount = Convert.ToInt32(amntSapphire.Text);
                    existingAmount = existingAmount + amountAdded;
                    amntRing.Text = existingAmount.ToString();
                    break;

                case "Emerald":
                    existingAmount = Convert.ToInt32(amntEmerald.Text);
                    existingAmount = existingAmount + amountAdded;
                    amntBracelet.Text = existingAmount.ToString();
                    break;
            }

            //MessageBox.Show("Selected Item Text: " + selectedJewelry + "\n" + "Amount Added: " + amountAdded);
        }
    }
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        cmbTypeofJewelry.Items.Add("Diamond");
        cmbTypeofJewelry.Items.Add("Pink Diamond");
        cmbTypeofJewelry.Items.Add("Sapphire");
        cmbTypeofJewelry.Items.Add("Emerald");
    }

    private void Return_Click(object sender, RoutedEventArgs e)
    {
        this.Hide();
        OpenMain.Show();
    }

    private void cmbTypeofJewelry_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

    }
}

}

Этот код может изменить текст в текстовых блоках, но после его скрытия и повторного отображения. Текст по умолчанию имеет свои первоначальные значения.

1 Ответ

0 голосов
/ 06 января 2019

Переместите объявление OpenInventory в вашу форму как:

public partial class Form1 : Form
{
    private Inventory OpenInventory;

в конструкторе вашей формы создайте экземпляр OpenInventory:

public Form1()
{
    OpenInventory = new Inventory();

удалить код из Botton_Click.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...