Как мне открыть новую форму удовлетворяющее условию БД?
Хочу авторизоваться под 3 роли: Мастер Админ Менеджер Ну и не долго думая создал кучу RadioButton и задал им значения от 1...3, т.к в БД MySQL прописано таблица с Authorized и в ней есть 4 таблицы: ID, Login, Password, Status(ну в каком то плане привилегия). Собственно в Status разбит на интовые значение от 1...3, где 1 это АДМИН, 2 это Мастер, 3 это Менеджер. В итоге перепробовав все я пришел к тому что не могу никак открыть новую форму 2(Главную) чтобы это удовлетворяло условию от 1...3 RadioButton'ов. То есть он заходит, при любом выбор RadioButton... Вот мой код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int status1;
int status2;
int status3;
private void button1_Click(object sender, EventArgs e)
{
string loginUSER = textBox1.Text;
string passUSER = textBox2.Text;
DB database = new DB();
DataTable table = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter();
MySqlCommand command = new MySqlCommand("SELECT * FROM `authorized` WHERE `Login` = @uL AND `Password` = @uP", database.getCon());
command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = loginUSER;
command.Parameters.Add("@uP", MySqlDbType.VarChar).Value = passUSER;
adapter.SelectCommand = command;
adapter.Fill(table);
if (table.Rows.Count > 0)
{
MessageBox.Show("да");
userROLE();
}
else
{
MessageBox.Show("нет");
}
}
private void checkedRadioButton()
{
if (radioButton1.Checked == true)
{
status1 = 1;
}
if (radioButton2.Checked == true)
{
status2 = 2;
}
if (radioButton3.Checked == true)
{
status3 = 3;
}
}
private void userROLE()
{
checkedRadioButton();
if (status1 == 1)
{
DB database1 = new DB();
MySqlDataAdapter adapter1 = new MySqlDataAdapter();
DataTable table1 = new DataTable();
MySqlCommand command1 = new MySqlCommand("SELECT * FROM `authorized` WHERE `Status`=@uS", database1.getCon());
command1.Parameters.Add("@uS", MySqlDbType.Int32).Value = status1;
adapter1.SelectCommand = command1;
adapter1.Fill(table1);
if (table1.Rows.Count > 0)
{
Form2 f2 = new Form2();
f2.Show();
Hide();
}
}
if (status2 == 2)
{
DB database2 = new DB();
MySqlDataAdapter adapter2 = new MySqlDataAdapter();
DataTable table2 = new DataTable();
MySqlCommand command2 = new MySqlCommand("SELECT * FROM `authorized` WHERE `Status`=@uS", database2.getCon());
command2.Parameters.Add("@uS", MySqlDbType.Int32).Value = status2;
adapter2.SelectCommand = command2;
adapter2.Fill(table2);
if (table2.Rows.Count > 0)
{
Form2 f2 = new Form2();
f2.Show();
Hide();
}
}
if (status3 == 3)
{
DB database3 = new DB();
MySqlDataAdapter adapter3 = new MySqlDataAdapter();
DataTable table3 = new DataTable();
MySqlCommand command3 = new MySqlCommand("SELECT * FROM `authorized` WHERE `Status`=@uS", database3.getCon());
command3.Parameters.Add("@uS", MySqlDbType.Int32).Value = status3;
adapter3.SelectCommand = command3;
adapter3.Fill(table3);
if (table3.Rows.Count > 0)
{
Form2 f2 = new Form2();
f2.Show();
Hide();
}
}
}
}
}```
Ответы (1 шт):
Думаю что для начала Ваша форма должна знать кто инициализирует ее и в зависимости от внедряемого поля/свойства форма меняет поведение
var f2 = new Form2(); // внедрять можно и через конструктор, для этого собственно создаётся нужный конструктор
f2.User a можно и через свойство которое и будет определять её поведение
f2.Show();
Hide();
а можно опредлелять отдельные формы для отдельных ролей, если формы кардинально отличаются
var f2 = new ManagerForm();
f2. введите тут какое нибудь свойство котороеи будет определять её поведение
f2.Show();
Hide();
var f2 = new AdminForm();
f2. введите тут какое нибудь свойство котороеи будет определять её поведение
f2.Show();
Hide();
.....