Lorsque j'exécute mon application de bureau, le formulaire1 est ouvert en premier et lorsqu'une ligne de la vue de grille de données1 est cliquée, une instance de form2 est ouverte.form2 comporte plusieurs zones de texte et lorsque je les remplis bouton ces valeurs doivent être montrées dans la vue de grille de données 2 de form1!Empêchez de rouvrir le premier formulaire C#
suivant donne le code de form1
public partial class Form1 : Form
{
string dbconnection;
public Form1()
{
InitializeComponent();
dbconnection = @" Data Source = D:\SQLite\SQLiteStudio\DB1.db ; version=3 ";
}
private static Form1 f1;
public static Form1 getInstance(){
if (f1 == null)
{
f1 = new Form1();
}
else
f1.BringToFront();
return f1;
}
private void loadButton_Click(object sender, EventArgs e)
{
{
using (SQLiteConnection con = new SQLiteConnection(dbconnection))
{
try
{
con.Open();
if (con.State == ConnectionState.Open)
{
string sql = "select MESSAGE_ID from Message";
SQLiteCommand command = new SQLiteCommand(sql, con);
SQLiteDataReader reader = command.ExecuteReader();
//dataGridView1.ColumnCount = 1;
// dataGridView1.Columns[0].Name = "Message ID";
DataTable ds = new DataTable();
ds.Load(reader);
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = ds;
dataGridView1.Refresh();
}
}
catch (Exception m)
{
MessageBox.Show(m.Message);
}
}
}
}
public void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
Form2 f2 = new Form2();
f2.IDtext.Text = row.Cells["MESSAGE_ID"].Value.ToString();
f2.ShowDialog();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}
suivant est le code de Form2
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
/* if (f1 == null)
{
f1 = new Form1();
} */
Form1 f1x = Form1.getInstance();
DataTable dt1 = new DataTable();
f1x.dataGridView2.DataSource = dt1;
dt1.Columns.Add("MessageID", typeof(string));
dt1.Columns.Add("Name", typeof(string));
dt1.Columns.Add("Number", typeof(string));
DataRow dr = dt1.NewRow();
dr["MessageID"] = IDtext.Text; ;
dr["Name"] = nameText.Text;
dr["Number"] = numberText.Text;
dt1.Rows.Add(dr);
f1x.Show();
}
}
J'ai écrit une méthode nommée getInstance() dans form1 pour y parvenir encore une nouvelle fenêtre s'ouvre. Je veux que les valeurs apparaissent dans le formulaire1 que j'ai chargé initialement mais les données sont affichées dans une nouvelle instance de form1. Comment puis-je afficher les données dans la form1 initiale que je chargé
Vous ne remettras '' f1' dans Form1' avant d'appeler 'Form1.getInstance' si vous créez explicitement une nouvelle' Form1'. Pourquoi ne pas simplement passer une référence à l'existant Form1 à Form2 quand vous le créez? Vous pouvez également ajouter un événement à 'Form2' que vous gérez dans' Form1'. – oerkelens
@oerkelens pouvez-vous donner un extrait de code pour cela? –