Сброс модальной формы при закрытии приложения C# Windows Forms - PullRequest
0 голосов
/ 19 февраля 2020

Я пишу C# Windows Forms App Online Store GUI, который взаимодействует с базой данных. Одна из вещей, которые я должен сделать, это обращаться с клиентами, которые уже находятся в базе данных. В форме главного меню они нажимают кнопку «Постоянный клиент» и вводят свой адрес электронной почты и пароль. Затем введенные данные сверяются с клиентами, хранящимися в базе данных, и, если они проверены, их пользовательская информация заполняется в текстовые поля (Имя, данные кредитной карты, CVS и т. Д. c ...), и форма заказа становится видимой. , У меня нет проблем там. Проблема, с которой я сталкиваюсь, заключается в том, что если возвращающийся клиент успешно входит в систему, а затем отменяет ее обратно в главное меню, следующий человек, который нажимает кнопку «Возвращающийся клиент», поднимает форму с информацией о первом пользователе, уже заполненной и видимой. , поскольку оба метода this.Close() и this.DialogResult = DialogResult.Cancel оба только скрывают форму, а не закрывают и освобождают ее. Но затем, если я использую this.Dispose() в Форме возврата клиента, чтобы освободить ее, ее нельзя будет снова открыть.
Мой вопрос: есть ли простой способ справиться с этим? Я самоучка в C#, так что прости мою неопытность. Спасибо за любую помощь, которую вы можете оказать.

За запрос см. Код формы 1 (форма главного меню) ниже:

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Database_Interface_Project
{
    public partial class Form1 : Form
    {
        // Removed SqlConnectionString for security purposes.
        public SqlConnection cnn = new SqlConnection(connectionString);


        // Main Menu Form
        public Form1()
        {
            InitializeComponent();
        }

        // New Customer Form
        Form2 newCustomer = new Form2();

        private void newCusButt_Click(object sender, EventArgs e)
        {
            newCustomer.ShowDialog();
        }

        // Returning Customer Form
        ReturningCustomer returningCustomer = new ReturningCustomer();
        private void RetCusButt_Click(object sender, EventArgs e)
        {
            returningCustomer.ShowDialog();

        }

        private void exitButt_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        // Manager Menu Form
        Manager managerMenu = new Manager();
        private void managerButt_Click(object sender, EventArgs e)
        {
            managerMenu.ShowDialog();
        }
    }
}```

1 Ответ

2 голосов
/ 19 февраля 2020

Вам просто нужно заново создать форму returningCustomer, чтобы сбросить ее поля.

private void RetCusButt_Click(object sender, EventArgs e)
{
    using (var returningCustomer = new ReturningCustomer())
    {
        returningCustomer.ShowDialog();
    }
}

Автоматическое использование вызовов операторов Dispose() после того, как оставлен блок using.

Примечание : в вашем случае вам необходимо утилизировать ShowDialog соответствующим образом, чтобы избежать утечки GDI, поскольку это имеет побочный эффект от поддержания объектов GDI в живых.

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