dunno1921 Ответов: 2

Как открыть основную форму после входа в систему?


После входа в систему я хочу открыть основную форму. Основная форма состоит из 4 кнопок с левой стороны, где каждая представляет собой один пользовательский элемент управления, каждый щелчок по кнопке должен открывать/показывать usercontrol, который расположен в правой части основной формы. Поэтому то, что я хочу сделать после входа в систему, - это показать/начать с первой кнопки, которая является кнопкой Home, другой известной как HomeUserControl.
Когда я запускаю этот код, логин работает, но он открывает пустую форму

Что я уже пробовал:

I have this login file:

<pre>
        private void ButtonLogin(object sender, EventArgs e)
        {
            DB db = new DB();

            String username = textBoxUser.Text;
            String password = textBoxPass.Text;


            DataTable table = new DataTable();

            MySqlDataAdapter adapter = new MySqlDataAdapter();

            MySqlCommand command = new MySqlCommand("SELECT * FROM `korisnik` WHERE `username` = @usn and `lozinka` = @loz", db.getConnection());

            command.Parameters.Add("@usn", MySqlDbType.VarChar).Value = username;
            command.Parameters.Add("@loz", MySqlDbType.VarChar).Value = password;

            adapter.SelectCommand = command;

            adapter.Fill(table);

            //provjera postoji li korisnik

            if(table.Rows.Count > 0)
            {
                this.Hide();
                MainForm mainForm = new MainForm();
                mainForm.Show();
            }
            else
            {
                // provjera je li polje username prazno
                if (username.Trim().Equals(""))
                {
                    MessageBox.Show("Upišite username kako bi se uspješno ulogirali", "Prazan username", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                // provjera je li polje lozinka prazno
                else if(password.Trim().Equals(""))
                {
                    MessageBox.Show("Upišite lozinku kako bi se uspješno ulogirali", "Prazna lozinka", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                //provjera jesu li oba polja prazna
                else
                {
                    MessageBox.Show("Pogrešan username ili lozinka", "Pogrešni podaci", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
        }
    }
}





и это главная форма:

namespace projekt
{
    public partial class MainForm : Form
    {
        private void button1_Click(object sender, EventArgs e)
        {
            if (!panel.Controls.Contains(HomeUserControl.Instanca))
            {
                panel.Controls.Add(HomeUserControl.Instanca);
                HomeUserControl.Instanca.Dock = DockStyle.Fill;
                HomeUserControl.Instanca.BringToFront();
            }
            else
                HomeUserControl.Instanca.BringToFront();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (!panel.Controls.Contains(DogsUserControl.Instanca))
            {
                panel.Controls.Add(DogsUserControl.Instanca);
                DogsUserControl.Instanca.Dock = DockStyle.Fill;
                DogsUserControl.Instanca.BringToFront();
            }
            else
                DogsUserControl.Instanca.BringToFront();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (!panel.Controls.Contains(CatsUserControl.Instanca))
            {
                panel.Controls.Add(CatsUserControl.Instanca);
                CatsUserControl.Instanca.Dock = DockStyle.Fill;
                CatsUserControl.Instanca.BringToFront();
            }
            else
                CatsUserControl.Instanca.BringToFront();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (!panel.Controls.Contains(AddUserControl_Dodaj.Instanca))
            {
                panel.Controls.Add(AddUserControl_Dodaj.Instanca);
                AddUserControl_Dodaj.Instanca.Dock = DockStyle.Fill;
                AddUserControl_Dodaj.Instanca.BringToFront();
            }
            else
                AddUserControl_Dodaj.Instanca.BringToFront();
        }
    }
}


Мне сказали, что я должен сделать конструктор по умолчанию, но я не знаю, как это сделать.

Richard Deeming

Похоже, вы храните пароли в виде обычного текста. Не делай этого!

Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]

2 Ответов

Рейтинг:
14

OriginalGriff

Все формы нуждаются в конструкторе, который обычно вызывает InitializeComponent - и когда вы создаете форму в VS designer, добавляя форму в свой проект, Конструктор defautl создается и делает именно это.

Если у вас его нет - и ваш код его не показывает, - то MainForm будет работать в конструкторе для добавления кнопок и т. д., поскольку он использует сам метод из файла .designer.cs, работающий для "рисования" элементов управления на экране для редактирования.

Поэтому начните с проверки того, есть ли у вас файл MainForm.designer.cs и содержит ли он InitializeComponent метод, если это так, вы можете просто воссоздать свой конструктор по умолчанию:

public MainForm() => InitializeComponent();
Будем делать.


dunno1921

Спасибо! Решил проблему!

OriginalGriff

Всегда пожалуйста!

Рейтинг:
0

RickZeeland

Вы можете сделать это с помощью приложения.Запуск в Program.cs, пример:

Application.Run(loginForm);
Application.Run(mainForm);