Могу ли я вернуть несколько значений из одной формы в другую

1

У меня есть 2 формы, первая форма4, которая является dataGridView, содержит информационные базы из базы данных, когда я нажимаю кнопку "Создать", форма 5 показывает формуляр, который я должен заполнить, затем кликнуть на кнопку "добавить", наконец, результат Я должен появиться в datagridView формы Form4. это возможно? это мой код:

private void button2_Click(object sender, EventArgs e)
{
    SqlConnection connection = new SqlConnection(connectionString);
    connection.Open();
    SqlCommand sql = new SqlCommand("insert into journal values('" + textBox1.Text + "','" + textBox2.Text + "','" + comboBox2.SelectedItem.ToString() + "','" + comboBox1.SelectedItem.ToString() + "','" + checkBox1.Checked.ToString()+"','"+checkBox2.Checked.ToString()+"');", connection);
    int o = sql.ExecuteNonQuery();
    MessageBox.Show(o + " Le Fichier journal a ?t? ajout? avec succ?s");
    connection.Close();
    textBox1.Text = "";
    textBox2.Text = "";
    if(textBox1.Text ==" ")
    {
        MessageBox.Show("La saisie du code Journal est obligatoire!!");
    }
    affich();             
}
 
private void affich()
{
    try
    {
        pat = connectionString;
        req = "SELECT * FROM journal";
        con = new SqlConnection(pat);
        con.Open();
        dr = new SqlDataAdapter(req, con);
        dr.Fill(ds, "journal");
        Form4 Form4 = new Form4();//ceci va creer une nouvelle instance je ne veux pas avoir une nouvelleFen?te
        Form4.journalDataGridView.DataSource = ds.Tables["journal"];
        Form4.Show();
    }
    catch (Exception e) { MessageBox.Show("Base de donn?es non trouv?e", e.Message); }
}        
        

и 2 формы: Изображение 174551

Спасибо за помощь

  • 2
    Это становится очень простым / тривиальным решением, если у вас есть объект для хранения ваших данных
  • 0
    Сэр, вы можете объяснить больше, я просто большой поклонник C # и спасибо :)
Показать ещё 2 комментария
Теги:
forms
datagridview

2 ответа

1
Лучший ответ

Требование: кнопка в Form5 должна добавлять результаты в DataGridView присутствующие в Form4 без создания нового экземпляра Form4

В Form4 измените свойство Modifiers journalDataGridView как Public.

Необходимы следующие изменения:

public partial class Form5 : Form
{ 
    Form4 form4;

    public Form5(Form4 f4)
    {
        InitializeComponent();
        this.form4 = f4;
    }

    private void button2_Click(object sender, EventArgs e)
    { 
        ...
        ...
        affich();
    }

    private void affich()
    {
       try
       {
           pat = connectionString;
           req = "SELECT * FROM journal";
           con = new SqlConnection(pat);
           con.Open();
           dr = new SqlDataAdapter(req, con);
           dr.Fill(ds, "journal");
           form4.journalDataGridView.DataSource = ds.Tables["journal"];
       }
       catch (Exception e) {
           MessageBox.Show("Base de donn?es non trouv?e", e.Message); 
       }
    }   
}

Как создать Form5 экземпляр из Form4:

Внутри Form4.cs:

public partial class Form4 : Form
{
    public Form4()
    {
       InitializeComponent();       
    }

    private void newButton_Click(object sender, EventArgs e)
    { 
         Form5 form5 = new Form5(this);
         form5.Show();
    }
    ...
 }

Или из любой другой родительской формы:

//must have valid Form4 objForm4
Form5 form5 = new Form5(objForm4);
  • 0
    Переменную можно назвать так же, как и класс. Это не то, что кто-то должен даже делать, конечно.
  • 0
    Для этого вы должны передать тот же экземпляр form4 в form5 .
3

попробуйте этот метод кода:

private void affich()
        {
            try
            {
                pat = connectionString;
                req = "SELECT * FROM journal";
                con = new SqlConnection(pat);
                con.Open();
                dr = new SqlDataAdapter(req, con);
                dr.Fill(ds, "journal");
                Form4 obj= new Form4();//ceci va creer une nouvelle instance je ne veux pas avoir une nouvelleFenête
                obj.journalDataGridView.DataSource = ds.Tables["journal"];
                Form4.Show();
            }
            catch (Exception e) { MessageBox.Show("Base de données non trouvée", e.Message); }
        }
  • 0
    спасибо @vishu minhas за ваш код, когда я его применю, он создаст новый экземпляр Form4 с только что добавленными новыми данными, но я хочу, чтобы результат добавления появился в dataGridView Form4 (не создавая новую форму) :)
  • 0
    Form4.Show() должен быть obj.Show()
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню