C # - не указан аргумент, который соответствует необходимому формальному параметру 'Role' из 'MainMenuForm.MainMenuForm (string)' - PullRequest
0 голосов
/ 25 мая 2019

Добрый вечер,

Я пытаюсь создать учетную запись на основе ролей для своего приложения C # WinForms. Я все еще очень простой пользователь C #, и это часть академического проекта. Вышеприведенная ошибка показывает, и я не знаю, как ее устранить.

Логины взяты из созданной мной локальной БД, подключенной к .NET (для этого приложения).

У меня есть два пользователя, один из них пользователь Admin, один пользователь по умолчанию.

ОБРАТИТЕ ВНИМАНИЕ, я знаю о проблеме SQL-инъекций, я разберусь с этим, как только исправлю эту ошибку.

Не могли бы вы посоветовать, пожалуйста, как исправить эту ошибку?

Заранее спасибо.

Я следовал учебнику по YT и дошел до этой части, где генерируется ошибка - см. Код ниже.

namespace Library_System_Project
{
    public partial class MainMenuForm : Form
    {
        public MainMenuForm(string Role) // Error occurs here
        {
            InitializeComponent();
            lblRole.Text = Role; // Error occurs here
        }

Кроме того, ниже в другой форме, но относится к выше:

private void btnOk_Click(object sender, EventArgs e)
{
    //Database Connection Setup
    SqlConnection Connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename = C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\Library System Project.mdf;Integrated Security=True;Connect Timeout=30;");
    string query = "Select * from Users where User_Username = '" + txtUsername.Text.Trim() + "' and User_Password = '" + txtPassword.Text.Trim() + "'";
    SqlDataAdapter SDA = new SqlDataAdapter(query, Connection);
    DataTable DT = new DataTable();
    SDA.Fill(DT);

    // Access to Main Menu for Authorized Users
    if (DT.Rows.Count == 1)
    {
        MainMenuForm MainMenu = new MainMenuForm(DT.Rows[0][0].ToString());
        MainMenu.Show();
        this.Hide();
    }

1 Ответ

0 голосов
/ 26 мая 2019

Как упоминалось в моем комментарии, Winforms требует, чтобы элементы управления имели конструктор без параметров. Вы можете обойти это, создав метод для дальнейшей инициализации формы:

public partial class MainMenuForm : Form
{
   public MainMenuForm()
   {
      InitializeComponent();            
   }

   public void SetRole(string role)
   {
       lblRole.Text = role;
   }
}

, а затем

private void btnOk_Click(object sender, EventArgs e)
{
    //...

    // Access to Main Menu for Authorized Users
    if (DT.Rows.Count == 1)
    {
        MainMenuForm MainMenu = new MainMenuForm();
        MainMenu.SetRole(DT.Rows[0][0].ToString());
        MainMenu.Show();
        this.Hide();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...