C# 在form1到form2的组合框中使用所选值CardNumber

C# 在form1到form2的组合框中使用所选值CardNumber,c#,sql-server,visual-studio-2010,C#,Sql Server,Visual Studio 2010,我试图通过输入sql数据库中的pin码来获取已登录的所选卡号,然后我需要匹配所选卡号以从数据库中检索其余额,并将其显示在富文本框中。我已经能够从数据库中获取PIN,并将其与用户卡号进行匹配,以使他们能够访问表单2,但我发现很难从表单1上的组合框中获取所选卡号,并在单击余额按钮并在表单2 richtextbox上显示后使用它检索所选用户的余额。我有以下代码: public partial class Form1 : Form { public int logAttempts = 3;

我试图通过输入sql数据库中的pin码来获取已登录的所选卡号,然后我需要匹配所选卡号以从数据库中检索其余额,并将其显示在富文本框中。我已经能够从数据库中获取PIN,并将其与用户卡号进行匹配,以使他们能够访问表单2,但我发现很难从表单1上的组合框中获取所选卡号,并在单击余额按钮并在表单2 richtextbox上显示后使用它检索所选用户的余额。我有以下代码:

public partial class Form1 : Form
{

    public int logAttempts = 3;
    public string accountNo;      

    public Form1()
    {
        InitializeComponent();            

    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void BtnEnter_Click(object sender, EventArgs e)
    {
        int index = cBCardNumber.SelectedIndex;

        DataRow dpin = dataSet1ATMCards.Tables["ATMCards"].Rows[index];
        String pin = dpin.ItemArray.GetValue(1).ToString();           

        if (textBoxPin.Text.Length == 4)
        {
            if (String.Equals(pin, textBoxPin.Text))
            {
                Form2 frm2;
                frm2 = new Form2();
                frm2.ShowDialog();
            }
            else
            {
                if (loginAttempts == 1)
                {

                    sqlCommandConfiscated.Parameters["@cardNumber"].Value = cBCardNumber.Text;
                    sqlCommandConfiscated.Parameters["@confiscated"].Value = true;

                    try
                    {
                        sqlCommandConfiscated.Connection.Open();
                        sqlCommandConfiscated.ExecuteNonQuery();
                        MessageBox.Show("You have reached your maximum login attempts.");
                        textBoxPin.Clear();

                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                    finally
                    {
                        sqlCommandConfiscated.Connection.Close();
                    }
                }
                else
                {
                    loginAttempts--;
                    MessageBox.Show("You have entered the Wrong Pin. You have " + loginAttempts);
                }
            }
        }
        else
        {
            MessageBox.Show("Please enter your 4 digit Pin Number");
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {           
        sqlDataAdapter1.Fill(dataSet1ATMCards.ATMCards);       

    }

    private void cBCardNumber_SelectedIndexChanged(object sender, EventArgs e)
    {
        loginAttempts = 3;
    }   

    }
}

一种方法是创建一个以PIN为成员的结构,在form1中设置其值,并在form2中使用它

结构:

表格1:

表格2:


将PIN属性添加到fm2

Form2 frm2;                 
frm2 = new Form2(); 
frm2.PIN =  pin;               
frm2.ShowDialog();  
然后是一种方式

基本技巧是使fm2独立于fm1。您可以重载ShowDialog并将其传递到其中。 拥有某种公共结构/类,并从两者中使用它

        Person p = new Person();
        p.PIN = dpin.ItemArray.GetValue(1).ToString();
        Form2 frmPopup = new Form2();
        frmPopup.p = p;
        frmPopup.ShowDialog();
        public Person p { get; set; }
Form2 frm2;                 
frm2 = new Form2(); 
frm2.PIN =  pin;               
frm2.ShowDialog();