0

frmLog()ユーザー名とパスワードのテキスト ボックスがあるログイン フォーム " " があり、ユーザー名のテキスト ボックスから入力テキストを取得したいと考えています。以下のコードを参照してください。混乱しないでください。私は mysql データベースを使用しているので、他の構文コードは重要ではありません。

これはログインフォーム " frmLog()"です

 private void button1_Click(object sender, EventArgs e)
        {
            ApareceCrudLib a = new ApareceCrudLib("localhost", "root", "", "cashieringdb");
            string user = txtLogin.Text;
            string pass = txtPassword.Text;
            string query = "SELECT * FROM register WHERE username='" + user + "' AND password=MD5('" + pass + "')";
            int result = a.Count(query);
            if (result == 1)
            {
                frmMain main = new frmMain();
                main.ShowDialog();
                this.Dispose();
            }
            else
            {
                MessageBox.Show("Login Failed! Try Again");
                txtLogin.Text = "";
                txtPassword.Text = "";
            }
        }

これは、コード " " を取得したい別のフォームですfrmMain()public void dataLog()から入力値を取得しようとするコードの一部である を参照してくださいfrmLog

private void frmMain_Load(object sender, EventArgs e)
{
    a = new ApareceCrudLib("localhost", "root", "", "cashieringdb");
    loadDataGridView_Main();
    dataLog();
}
public void loadDataGridView_Main()
{
    dgvMain.Rows.Clear();
    List<string>[] detailList = a.mysqlSelect("Select * From sales");
    for (int i = 0; i < detailList.Length; i++)
    {
        dgvMain.Rows.Add(detailList[i][0], detailList[i][1], detailList[i][2], detailList[i][3]);
    }
}
public void dataLog()
{
    frmLog kk = new frmLog();
    txtLog.Text= kk.txtLogin.ToString();
}

これは間違った結果です

ここに画像の説明を入力

frmLog()結果は、例「client123」のユーザー名である必要があります。ここで何が間違っていると思いますか?

4

3 に答える 3

2

kk.txtLogin.ToString()、現在のオブジェクトを表す文字列を返します。この場合、現在のオブジェクトはTextBoxです。

を表示する代わりにTextBox、 の値を表示する必要がありTextBoxます。そのコードを次のように変更します。

kk.txtLogin.Text;

アップデート

txtLoginの値を表示frmLogしたい場合は、その値を格納frmMainする静的変数を宣言できます。frmLogtxtLogin

frmLog:

public static String LOGIN_USER = "";

次にbutton1_Click

    if (result == 1)
    {
      LOGIN_USER = txtLogin.Text;
      frmMain main = new frmMain();
      main.ShowDialog();
      this.Dispose();
    }

frmMain_Load:

    public void dataLog()
    {        
       txtLog.Text= frmLog.LOGIN_USER;
    }
于 2013-03-30T15:45:26.403 に答える
0

これは、新しいインスタンスからデータを読み込もうとしているからです。frmLog();

あなたfrmMainの中で、これを書かないでください:

frmLog kk = new frmLog();

代わりに、フォーム クラスでパブリック参照を作成します。

public frmLog kk;

そして、あなたのfrmLogで、

frmMain main = new frmMain();
main.kk=this; 
main.ShowDialog();

これにより、最初のフォームへの参照が 2 番目のフォームに作成されます。

于 2013-03-30T16:11:22.147 に答える