当我将用户名和密码从Form2传递到Form3时,首次运行该应用程序时,该值并未首次传递。但是,当我重新运行该应用程序时,它每次都能正常运行,并且添加成功,这对于C#和Windows编程来说确实是新的,所以请原谅任何不良的执行。流是form1-> form2-> form3
更新:
这是表格3的定义
public partial class Form3 : Form
{
MySqlConnection connection;
public string username;
public string password;
public Form3(string user,string pass)
{
username = user;
password = pass;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(username, password);
string connstring = "server=localhost;user=" + username + ";database=testdb;port=3306;password=" + password + ";";
connection = new MySqlConnection(connstring);
connection.Open();
string query = "INSERT INTO user_books values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "');";
MySqlCommand newcommand = new MySqlCommand(query,connection);
try
{
newcommand.ExecuteNonQuery();
MessageBox.Show("DONE");
}
catch (Exception e1)
{
MessageBox.Show(e1.ToString());
}
connection.Close();
}
private void Form3_Load(object sender, EventArgs e)
{
MessageBox.Show(username, password);
}
}
这是form2:
public partial class Form2 : Form
{
public static MySqlConnection connection;
public string username;
public string password;
public Form2(string user,string pass)
{
InitializeComponent();
this.Text = "MAIN MENU";
username = user;
password = pass;
}
Form3 form3 = new Form3(username,password);
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(username,password);//this lines no longer gives an empty message box with title Error
form3.Show();
}
}
这是表格1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Text = "LOGIN";
}
MySqlConnection connection;
Form2 form2;
private void button1_Click(object sender, EventArgs e)
{
string username = textBox1.Text;
string password = textBox2.Text;
string connstring = "server=localhost;user=" + username + ";database=testdb;port=3306;password=" + password + ";";
try
{
connection = new MySqlConnection(connstring);
connection.Open();
form2 = new Form2(username,password);
form2.Show();
}
catch (Exception e1)
{
MessageBox.Show(e1.ToString(), "Exception");
}
connection.Close();
}
}
使用mysql和visual studio 2012
最佳答案
请给您的表格起适当的名称,并删除所有静态变量。
将Form3的创建移动到事件处理程序中,这样它将获得在单击时(而不是在构造类时)设置的用户名/密码。
关于c# - 在表单之间传递值时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20788675/