1

私のプログラムは、あるフォームから別のフォームに値を正しく渡しません.文字列を次のフォームに渡すと、常にnullとして表示されます.

関連する領域の私のコードは次のとおりです。

public partial class openingForm : Form
{
    public string databaseselected;
    public openingForm()
    {
        InitializeComponent();
    }

    public void button2_Click(object sender, EventArgs e)
    {
        openFileDialog1.Filter = "Event Control Database Files (.sdf)|*.sdf";
        openFileDialog1.FilterIndex = 1;
        openFileDialog1.ShowDialog();
        databaseselected = openFileDialog1.FileName;
        loginForm login1 = new loginForm();
        this.Hide();
        login1.ShowDialog();

    }

    private void button1_Click(object sender, EventArgs e)
    {
        string name = textBox1.Text.Trim();
        if (!File.Exists(textBox1.Text.Trim()+".sdf"))
        {
            string connectionString = "DataSource= "+name+".sdf";
            databaseselected = connectionString;**
            SqlCeEngine en = new SqlCeEngine(connectionString);
            en.CreateDatabase();

次に、いくつかのテーブルの作成......そして:

            loginForm login = new loginForm();
            login.ShowDialog();
            this.Close();

これまでのところ、最初に宣言され、クリックされたボタンに応じて異なる値に初期化される変数があります。これは次の形式です。

public partial class loginForm : Form
{
    openingForm op = new openingForm();
    public string userLoggedIn;
    public loginForm()
    {
        InitializeComponent();
    }

    private void loginForm_Load(object sender, EventArgs e)
    {

        AddValueToLogs();

    }

    private string myMethod(string user, string pass)
    {
        string selection = "Select * from Login where userName = @userName and Hash=@hashResult";
        using (var myConnection = new SqlCeConnection(**op.databaseselected**))
        using (var command = new SqlCeCommand(selection, myConnection))
        {
            command.Parameters.Add("@username", SqlDbType.NVarChar, 20).Value = userNameBox.Text;
            command.Parameters.Add("@hashResult", SqlDbType.NVarChar, 50).Value = hashResult;

databaseelcted の値が loginForm に渡されない理由を誰か教えてもらえますか?

4

1 に答える 1

2

接続文字列をに挿入するだけloginFormです:

private string _cString;
public loginForm(string cString)
{
    _cString = cString;
}

そして後で:

new SqlCeConnection(_cString))

を起動するときは、次のようにしますloginForm

... new loginForm(databaseselected);
于 2013-10-11T13:29:27.570 に答える