Aggiornamento Form1 da dati Form2

di il
3 risposte

Aggiornamento Form1 da dati Form2

Su Visual Studio ho creato un app windows con due form uno in cui è caricata su una lista una tabella dal DB SQL Server e questa lista appare in una gridview sul primo form dove cliccando su una riga e col bottone "Modifica" apre il secondo form con delle textbox con i campi del record selezionato e con possibilità di modificarli, ho un pulsante "invio" e non riesco proprio a modificare i dati nella gridview, qualcuno ha dei suggerimenti? posto il codice di seguito.

Le librerie non le scrivo
---------------------------------------FORM1--------------------------------------------------------------------------------------------------------------------------------------

namespace FormEsercizioStudenti
{

public partial class Form1 : Form
{
public static bool Modifica = false;
public static int IdModificato;

Studente selezionato;
public Form1()
{
InitializeComponent();
}
public void Form1_Load(object sender, EventArgs e)
{
List<Studente> studenti = new List<Studente>();
String connectionString = null;
SqlConnection connection;
SqlCommand command;
String Sql = null;
SqlDataReader dataReader;
connectionString = "Server=10.0.1.49;Database=EsercitazioneDipendenti;Trusted_Connection=True;";
Sql = "Select top 100 * From Studente";
connection = new SqlConnection(connectionString);
try
{
connection.Open();
command = new SqlCommand(Sql, connection);
dataReader = command.ExecuteReader();
while (dataReader.Read())
{
Studente stud = new Studente();
stud.Id = dataReader.GetInt32(0);
stud.Nome = dataReader.GetString(1);
stud.Cognome = dataReader.GetString(2);
stud.Data_nascita = dataReader.GetDateTime(3);
stud.Citta = dataReader.GetString(4);
stud.Nazione = dataReader.GetString(5);
stud.Sesso = dataReader.GetString(6);
stud.Altezza = dataReader.GetInt32(7);
stud.Titolo_studio = dataReader.GetString(8);
stud.Indirizzo = dataReader.GetString(9);
stud.Eta = dataReader.GetInt32(10);
studenti.Add(stud);
}
dataReader.Close();
command.Dispose();
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Can't open connection! ");
}
dataGridView1.DataSource = studenti;
}

public void button1_Click(object sender, EventArgs e)
{
selezionato = (Studente)dataGridView1.SelectedRows[0].DataBoundItem;
Form2 formModifiche = new Form2(selezionato);
formModifiche.Show();


if (Modifica == true)
{
updateRowinGridView(IdModificato);
}

}

private void updateRowinGridView(int idModificato)
{
??
}}}

-------------------------------------------------------FORM2----------------------------------------------------------------------------------------------------------------------

namespace FormEsercizioStudenti
{
public partial class Form2 : Form
{
Studente studente;

public Form2( )
{
InitializeComponent();
}
public Form2(Studente selezionato)
{
InitializeComponent();
this.studente = selezionato;
}

public void Form2_Load(object sender, EventArgs e)
{
txtId.Text = studente.Id.ToString();
txtNome.Text = studente.Nome;
txtDataNascita.Text = studente.Data_nascita.ToString();
txtCitta.Text = studente.Citta;
txtNazione.Text = studente.Nazione;
txtTitoloStudio.Text = studente.Titolo_studio;
txtSesso.Text = studente.Sesso;
txtEta.Text = studente.Eta.ToString();
txtAltezza.Text = studente.Altezza.ToString();
txtIndirizzo.Text = studente.Indirizzo;
txtCognome.Text = studente.Cognome;
Form1.IdModificato = studente.Id;

}

private void button2_Click(object sender, EventArgs e) //Bottone Annulla
{
txtId.Text = studente.Id.ToString();
txtNome.Text = studente.Nome;
txtDataNascita.Text = studente.Data_nascita.ToString();
txtCitta.Text = studente.Citta;
txtNazione.Text = studente.Nazione;
txtTitoloStudio.Text = studente.Titolo_studio;
txtSesso.Text = studente.Sesso;
txtEta.Text = studente.Eta.ToString();
txtAltezza.Text = studente.Altezza.ToString();
txtIndirizzo.Text = studente.Indirizzo;
txtCognome.Text = studente.Cognome;

}

private void button1_Click(object sender, EventArgs e) // Bottone Invio
{
Form1.Modifica = true;
Close();
}
}
}

3 Risposte

  • Re: Aggiornamento Form1 da dati Form2

    In form1
    Form1.IdModificato = studente.Id;

    dove trovi Form1 ?, non ti dà errore?

    inoltre in
    private void button2_Click(object sender, EventArgs e) //Bottone Annulla
    {
    //qui dentro risetti i textBox ai valori dell'oggetto Studente passato al costruttore?
    }

    forse dovresti dire meglio cosa vuoi fare,potrebbe essere utile
  • Re: Aggiornamento Form1 da dati Form2

    Prova a dare un occhio ad Application.OpenForms ,cerca esempi, in pratica puoi ricavare un riferimento al form che interessa e cambiarne ad esempio i valori delle variabili pubbliche ,
    se ad esempio vuoi recuperare il Form1 aperto puoi fare così:

    Form1 f = (Form1)Application.OpenForms["Form1"];
    f.testodiProva="sono la variabile pubblica testo di prova,modificata";

    questo codice lo devi eseguire ovviamente nel form in cui vuoi recuperare i valori di Form1
  • Re: Aggiornamento Form1 da dati Form2

    Come ti ha detto gian82 puoi sfruttare Application.OpenForms per la tua causa, in particolare potresti usare questo metodo che fa al tuo caso:
    
    public static Form GetInstanceFormFromType(Type typeOfForm)
    {
       foreach (Form form in Application.OpenForms)
       {
           if (form.GetType() == typeOfForm)
           {
                return form;
           }
        }
        return null;
    }
    
    nel chiamare dai il nome del form, ad esempio se la classe del form è Form1:
    
    Form1 form1 = GetInstanceFormFromType(typeof(Form1));
    
    e poi puoi usare tutti i/le metodi/funzioni/proprietà pubbliche del form in oggetto

    Ciao!
Devi accedere o registrarti per scrivere nel forum
3 risposte