Я просмотрел как минимум дюжину статей о StackOverflow и нашел похожие проблемы и попытался собрать их воедино, но я просто не могу понять.
Я делаю приложение Windows Form в C #.
У него есть небольшая форма «Логин», где они вводят идентификатор, и он проверяет, что идентификатор правильный, и затем появляется главная страница.
Если я начну со страницы входа, я смогу создать новую главную страницу и передать идентификатор и имя от имени входа на главную страницу при ее создании. После этого логин скрывается и отображается главная страница. Однако, когда вы закрываете главную страницу, приложение не закрывается, потому что логин все еще открыт и скрыт. Но если вы закроете логин, он закроет все.
Я думаю, что мне нужно начать с главной страницы, а затем создать логин с главной страницы. Таким образом, я могу закрыть логин после его подтверждения, и он не закроет все. Однако я не могу понять, как передать идентификатор и имя из логина на главную страницу.
Вот что у меня сейчас ...
Program.cs
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form_Login frmLogin = new Form_Login();
if (frmLogin.ShowDialog() == DialogResult.OK) {
Application.Run(new Form_MainPage());
} else {
Application.Exit();
}
}
Form_Login.cs
public partial class Form_Login : Form {
public Form_Login() {
InitializeComponent();
txtBuyerID.Focus();
}
private void txtBuyerID_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Enter) {
string connString = "Data Source=<server>;Initial Catalog=<database>;Integrated Security=true;";
string BuyerName = "";
string sql = "SELECT c.first_name + ' ' + c.last_name AS name FROM contacts c WHERE c.buyer='Y' AND c.id=@BuyerID";
using (SqlConnection conn = new SqlConnection(connString)) {
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@BuyerID", txtBuyerID.Text);
try {
conn.Open();
BuyerName = (string)cmd.ExecuteScalar();
Form_MainPage frmMainPage = new Form_MainPage(txtBuyerID.Text,BuyerName);
this.txtBuyerID.Text = BuyerName;
Hide();
} catch (Exception ex) {
Console.WriteLine(ex.Message);
MessageBox.Show(ex.Message);
}
}
}
}
}
Form_MainPage.cs
public partial class Form_MainPage : Form {
public Form_MainPage(string BuyerID, string BuyerName) {
InitializeComponent();
this.Text = "BUYER: " + BuyerID + " - " + BuyerName;
this.Show();
}
}
В этот момент я все перепутал и запутался. Это было намного проще, когда я делал это еще в VB! Что мне нужно изменить, чтобы получить правильную последовательность загрузки и передачи переменных из логина на главную страницу?