Передача переменных и установка атрибутов формы на основе переданных переменных в C # - PullRequest
0 голосов
/ 27 апреля 2019

Я просмотрел как минимум дюжину статей о 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! Что мне нужно изменить, чтобы получить правильную последовательность загрузки и передачи переменных из логина на главную страницу?

1 Ответ

0 голосов
/ 27 апреля 2019

Это не должно быть сложно сделать.Я думаю, что вы хотите передать BuyerId и BuyerName из LoginPage в MainPage после успешной аутентификации.

Form_Login.cs должен выглядеть следующим образом.

Form_MainPage frmMainPage = new Form_MainPage();

На вашей главной странице,создавать ярлыки для BuyerId и BuyerName.Убедитесь, что у них есть общедоступные модификаторы.

frmMainPage.BuyerId.Text="ID";
frmMainPage.BuyerName.Text="BuyerName";
frmMainPage.Show();
this.Close(); //or Hide();

Посмотрите, поможет ли это.

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