C# 从其他窗体获取文本框值

C# 从其他窗体获取文本框值,c#,C#,表格1: 表格2: public partial class FrmMain : Form { OleDbCommand cmd = new OleDbCommand(); OleDbConnection cn = new OleDbConnection(); public FrmMain() { InitializeComponent(); } public string Use = String.Empty; pr

表格1:

表格2:

public partial class FrmMain : Form
{
    OleDbCommand cmd = new OleDbCommand();
    OleDbConnection cn = new OleDbConnection();

    public FrmMain()
    {
        InitializeComponent();
    }

    public string Use = String.Empty;

    private void btnLogin_Click_1(object sender, EventArgs e)
    {
        Use = txtUsername.Text;
    }
}

我想做一个程序,你可以把数据记录到数据库里。我需要将我在文本框中输入的用户名输入到另一个表单中,但用户名不会记录到ms access数据库中。

发生这种情况是因为您在此行中创建了一个新的
FrmMain实例:

private void button1_Click(object sender, EventArgs e)
{   
    string theDate1 = dateTimePicker1.Value.ToString("yyyy-MM-dd");
    string theDate2 = dateTimePicker2.Value.ToString("yyyy-MM-dd");
    dateTimePicker1.MaxDate = dateTimePicker2.Value;

    FrmMain Form = new FrmMain();
    string username = Form.Use;

    if (cboFrom.Text != "" && cboTo.Text != "" && Adults.Text != "" && Children.Text != "" && dateTimePicker2.Value > dateTimePicker1.Value)
    {
        string q = "insert into Booking([Departure], [Return], [From], [To],[Adults],[Children],[Username]) values ('"
            + theDate1.ToString() + "', '" + theDate2.ToString() + "','" + cboFrom.Text + "','"
            + cboTo.Text + "','" + Children.Text + "','" + Adults.Text + "', '" + username + "')";

        dosomething(q);
        MessageBox.Show("Success");
    }
}
另一种方法是在调用
Form2
时传递字符串。像

FrmMain Form = new FrmMain();
或者另一种方法是使字符串
使用
静态,并从
Form2
调用它,而不创建新实例:

Form2 f2 = new Form2();
f2.Username = txtUsername.Text;
f2.ShowDialog();

FrmMain Form=new FrmMain()
创建
FrmMain
类的新实例。您需要引用已经存在的名称…输入用户名的名称。
FrmMain Form1=new FrmMain()string username=Form1。使用
// FrmMain
public static string Use { get; set; }

// Form2
string username = FrmMain.Use;