2015-10-14 5 views
1

Форма 1:Получение значения текстового поля из другой формы

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; 
    } 
} 

Форма 2:

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"); 
    } 
} 

Im пытается сделать программу, где и может записывать данные в базу данных. Мне нужно получить имя пользователя, которое я вводил в текстовое поле, в другую форму, но имя пользователя не записывается в базу данных доступа ms.

+0

'FrmMain Form = новый FrmMain()' создает новый экземпляр вашей ' FrmMain'. Вам нужно указать тот, который уже существует ... тот, где вы ввели имя пользователя. – Lorek

+0

'FrmMain Form1 = new FrmMain() string username = Form1.Use' –

ответ

2

Это происходит потому, что вы создаете новый экземпляр FrmMain в этой строке:

FrmMain Form = new FrmMain(); 

В качестве альтернативы можно передать строку при вызове Form2. Как

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

Или другой способ сделать вашу строку Use статическими и вызвать его из Form2 без создания нового экземпляра:

// FrmMain 
public static string Use { get; set; } 

// Form2 
string username = FrmMain.Use; 
Смежные вопросы