2 petits problèmes...

Signaler
Messages postés
22
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
1 janvier 2008
-
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
-
Bonjour à tous,





Je sollicite de nouveau votre aide car j’ai deux petits
(enfin j’espère) problèmes…



 

A l’événement load de mon formulaire principal je charge un
nombre x de datagridview (nombre x déterminé par une requête sur une base
MySql)  les uns en dessous des autres.


Jaimerais voir apparaitre la scrollbar pour faire défiler
mes datagridview mais ca marche pas… Pourtant les propriétés autoscroll et
autosize sont à true…



 

Voici le code du designer.cs :



namespace

Projet_Test





{






   
partial
class
FormulairePrincipal







    {






       
private
System.ComponentModel.IContainer components = null;






       
protected
override
void
Dispose(bool disposing)






        {






           
if
(disposing && (components != null))






       
    {






                components.Dispose();






            }






           
base.Dispose(disposing);






        }






        #region
Code généré par le
Concepteur Windows Form
















       
private
void InitializeComponent()






        {






           
this.grpSeances
= new System.Windows.Forms.GroupBox();






           
this.btnValider
= new System.Windows.Forms.Button();






           
this.SuspendLayout();






           
//







           
//
grpSeances







           
//







           
this.grpSeances.Anchor
= ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)






                        | System.Windows.Forms.AnchorStyles.Left)));






           
this.grpSeances.AutoSize
= true;






           
this.grpSeances.Location
= new System.Drawing.Point(1,
24);






           
this.grpSeances.Name
= "grpSeances";






           
this.grpSeances.Size
= new System.Drawing.Size(373,
1005);






           
this.grpSeances.TabIndex
= 0;






           
this.grpSeances.TabStop
= false;






           
this.grpSeances.Text
= "Séances";






           
//







           
//
button1







       
    
//







           
this.btnValider.Location
= new System.Drawing.Point(1,
1);






           
this.btnValider.Name
= "button1";






           
this.btnValider.Size
= new System.Drawing.Size(75,
20);






           
this.btnValider.TabIndex
= 1;






           
this.btnValider.Text
= "Valider";






           
this.btnValider.UseVisualStyleBackColor
= true;






           
this.btnValider.Click
+= new System.EventHandler(this.button1_Click);






           
//







           
//
FormulairePrincipal







           
//







           
this.AutoScaleDimensions
new System.Drawing.SizeF(<st1:metricconverter productid"6F" w:st="on">6F</st1:metricconverter>, <st1:metricconverter productid="13F" w:st="on">13F</st1:metricconverter>);






           
this.AutoScaleMode
= System.Windows.Forms.AutoScaleMode.Font;






           
this.AutoScroll
= true;






           
this.AutoSize
= true;






           
this.ClientSize
= new System.Drawing.Size(465,
248);






           
this.Controls.Add(this.btnValider);






           
this.Controls.Add(this.grpSeances);






           
this.Name
= "FormulairePrincipal";






           
this.Text
= "FIFA 2008";






           
this.WindowState
= System.Windows.Forms.FormWindowState.Maximized;






           
this.FormClosed
+= new System.Windows.Forms.FormClosedEventHandler(this.FormulairePrincipal_FormClosed);






           
this.Load
+= new System.EventHandler(this.FormulairePrincipal_Load);






           
this.ResumeLayout(false);






           
this.PerformLayout();






 







        }






 







        #endregion






 







       
private
System.Windows.Forms.GroupBox grpSeances;






       
private
System.Windows.Forms.Button btnValider;






 







    }





}


Et voici le code du formulaire :



 


using
System;





using

System.Collections.Generic;





using

System.ComponentModel;





using

System.Data;





using

System.Drawing;





using

System.Text;





using

System.Windows.Forms;





using

MySql.Data.MySqlClient;






 

namespace

Projet_Test





{






   
public
partial
class
FormulairePrincipal : Form






    {






       
private
string DateDateTime(int
annee, int mois, int
jour)






        {






           
string
strMois = "";






           
string
strJour = "";






           
if
(mois < 10)






            {






                strMois = "0" + mois.ToString();






            }






           
else







            {






 
              
strMois = mois.ToString();






            }






           
if
(jour < 10)






            {






                strJour = "0" + jour.ToString();






            }






           
else







            {






                strJour = jour.ToString();






            }






       
    
string
strDateDateTimeModif = annee.ToString() + "-"
+ strMois + "-" + strJour;






           
return
strDateDateTimeModif;






        }






       
private
void AffichageJoursSeances()






        {






           
//chargement
des differents jours des séances







       
    
//récuperation du
nombre de jours







           
string
strConnexion = "datasource=localhost;username=root;database=fifa";






           
MySqlConnection
Connexion = newMySqlConnection(strConnexion);






           
try







            {






                Connexion.Open();






            }






           
catch
(MySqlException ex)






            {






                System.Windows.Forms.MessageBox.Show(ex.ToString());






            }






           
MySqlDataReader
MyReader = null;






           
MySqlCommand
CommandNbreJoursSeances = newMySqlCommand("SELECT
DAY(datetimeseance), MONTH(datetimeseance), YEAR(datetimeseance) FROM seances
WHERE YEAR(datetimeseance)='" + DateTime.Now.ToString("yyyy") + "'
GROUP BY DAY(datetimeseance)", Connexion);






            MyReader = CommandNbreJoursSeances.ExecuteReader();






           
int
i 1, x_pos 13, y_pos = 25;






           
while
(MyReader.Read())






            {






               
GroupBox
grpBxJours = newGroupBox();






                grpBxJours.Name = "grpBxJours_" + i;






               
DateTime
date = newDateTime((int)MyReader["YEAR(datetimeseance)"],
(int)MyReader["MONTH(datetimeseance)"],
(int)MyReader["DAY(datetimeseance)"]);






               
string
strJour = date.Date.DayOfWeek.ToString();






               
string
strJourFr = "";






               
switch
(strJour)






                {






                   
case
("Monday"):






                        strJourFr = "Lundi";






                       
break;






 







                   
case
("Tuesday"):






                        strJourFr = "Mardi";






                       
break;






 







                   
case
("Wednesday"):






                        strJourFr = "Mercredi";






                       
break;






 







                   
case
("Thursday"):






                        strJourFr = "Jeudi";






                       
break;






 







                   
case
("Friday"):






                        strJourFr = "Vendredi";






                       
break;






 







                   
case
("Saturday"):






                        strJourFr = "Samedi";






                       
break;






 







                   
case
("Sunday"):






    
                   strJourFr = "Dimanche";






                       
break;






                }






                grpBxJours.Text = strJourFr + " " + MyReader["DAY(datetimeseance)"].ToString()
+ "/" + MyReader["MONTH(datetimeseance)"].ToString() + "/" + MyReader["YEAR(datetimeseance)"].ToString();






                grpBxJours.Location = new System.Drawing.Point(x_pos,
y_pos);






                grpBxJours.Size = new System.Drawing.Size(600,
220);






               
grpSeances.Controls.Add(grpBxJours);






                y_pos += 225;






                i++;






 







               
//Remplissage
des groupBox des jours







               
string
strCommandParJour = "SELECT film.idfilm ,
film.titrefilm , salle.idsalle , salle.numerosalle , seances.idseance ,
TIME(seances.datetimeseance) FROM seances , salle , film , se_jouer WHERE
se_jouer.idfilm =film.idfilm AND seances.idseance =se_jouer.idseance AND
salle.idsalle =se_jouer.idsalle AND DATE(seances.datetimeseance )='"
+ DateDateTime((int)MyReader["YEAR(datetimeseance)"], (int)MyReader["MONTH(datetimeseance)"],
(int)MyReader["DAY(datetimeseance)"])
+ "' 
ORDER BY seances.datetimeseance ASC";






               
DataGridView
dgv = newDataGridView();






               
BindingSource
bdgSource = newBindingSource();






               
MySqlDataAdapter
mda = newMySqlDataAdapter(strCommandParJour,
strConnexion);






               
DataTable
table = newDataTable();






                table.Locale =
System.Globalization.CultureInfo.InvariantCulture;






                mda.Fill(table);






                bdgSource.DataSource = table;






                dgv.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);






                dgv.DataSource = bdgSource;






                grpBxJours.Controls.Add(dgv);






    dgv.Name = "dgv_" + i;






                dgv.Location = new System.Drawing.Point(2,
15);






                dgv.Size = new System.Drawing.Size(596,
202);






               
DataGridViewCellStyle
dataGridViewCellStyle1 = newDataGridViewCellStyle();






               
//dataGridViewCellStyle1.BackColor
= System.Drawing.Color.LightSalmon;







               
dataGridViewCellStyle1.BackColor = System.Drawing.Color.Chartreuse;






               
dgv.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;






                dgv.Columns["idfilm"].Visible = false;






                dgv.Columns["idsalle"].Visible = false;






                dgv.Columns["idseance"].Visible = false;






                dgv.Columns["titrefilm"].HeaderText = "Titre";






                dgv.Columns["numerosalle"].HeaderText = "Salle";






                dgv.Columns["TIME(seances.datetimeseance)"].HeaderText
= "Séance";






                dgv.ColumnHeadersHeightSizeMode
= System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;






 







               
//Ajouter
une colonne pour le nbre de tickets







               
DataGridViewComboBoxColumn
cmbBxCol = newDataGridViewComboBoxColumn();






                cmbBxCol.Name = "cmbBxCol_" + i;






                cmbBxCol.HeaderText = "Nbre Tickets";






                cmbBxCol.Items.AddRange(newobject[] { "1", "2",
"3", "4",
"5", "6",
"7", "8",
"9", "10"
});






                dgv.Columns.Insert(1,
cmbBxCol);






 







              
//Ajouter
une colonne pour le type de ticket







               
DataGridViewComboBoxColumn
cmbBxCol2 = newDataGridViewComboBoxColumn();






                cmbBxCol2.Name = "cmbBxCol2_" + i;






                cmbBxCol2.HeaderText = "Type Ticket";






                dgv.Columns.Insert(2,
cmbBxCol2);






 







              
string
strCommandTypeTicket = "SELECT nomticket FROM
ticket WHERE anneeticket = '" + DateTime.Now.ToString("yyyy") + "'";






            
  
MySqlDataAdapter
mda2 = newMySqlDataAdapter(strCommandTypeTicket,
strConnexion);






              
DataSet
ds = newDataSet();






               mda2.Fill(ds, "ticket");






              
foreach(DataRow dtrRow in
ds.Tables["ticket"].Rows)






               {






    
              cmbBxCol2.Items.Add(dtrRow["nomticket"].ToString());






               }






                           








               
//supprimer
la premiere colonne avec la flèche







                dgv.RowHeadersVisible = false;






 







               
//supprimer
la derniere ligne du DGV







                dgv.AllowUserToAddRows = false;






 







               
//Empécher
les modifications dans le datagridview







              








                dgv.AllowUserToAddRows = false;






                dgv.AllowUserToDeleteRows = false;






    
           
//dgv.ReadOnly
= true;







               
//MessageBox.Show(dgv.Rows.Count.ToString());







 







               








            }






           
try







            {






                Connexion.Close();






            }






           
catch
(MySqlException ex)






          
 {






                System.Windows.Forms.MessageBox.Show(ex.ToString());






            }






        }






       








       
public
FormulairePrincipal()






        {






            InitializeComponent();






        }






       
private
void FormulairePrincipal_FormClosed(object sender, FormClosedEventArgs
e)






        {






           
Application.Exit();






        }






 







       
private
void FormulairePrincipal_Load(object sender, EventArgs
e)






        {






            AffichageJoursSeances();






           
this.AutoScroll
= true;






           
this.AutoSize
= true;






        }






 







       
private
void button1_Click(object
sender, EventArgs e)






        {






          








        }






    }





}






 





Voilà pour le premier problème…



 




Le second est le suivant…



 




Je crée x datagridview à l’évenement Load du formulaire en
les différenciant par « dgv.Name = « dgv_ » + i » .
J’aimerais ensuite parcourir tous les datagridview affichés sur le formulaire,
pour en rechercher les modifications, en cliquant sur le boutton valider.


Comment puis accéder à mes datagridview, à l’évenement click
du boutton, étant donné que leur portée reste dans la fonction « AffichageJoursSeances() » ?



 




Voilà, en espérant avoir été suffisamment clair, merci à
tous pour vos réponses…



 

4 réponses

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Une réponse à ton 2em problème : Lorsque tu créé tes datagridview, tu les ajoutes dans les Contrôles de grpBxJours (qui est lui même ajouté dans un autre controle, mais je n'ai pas regardé plus en détail). Au final tout ces controles sont ajoutés au Controls de ta Form.

Je n'ai pas vérifié dans ton code, mais logiquement, depuis l'évènement click du bouton, tu devrais avoir accès à grpBxJours. Et dans ce cas, tu peux faire quelque chose comme ça (de tête, pas testé ni même compilé...):

// Dans la méthode click
foreach(Control control in grpBxJours.Controls)
{
    // On passe en revue tous les controles contenus dans grpBxJours
    if(control is DataGridView)
    {
       // On a trouvé un datagrid view
       DataGridView dgv = control as DataGridView;
      
       // Ensuite tu peux manipuler ton dgv, récupérer son nom pour déterminer son index, etc...
        string dgvName = dgv.Name;      
    }
}

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
Messages postés
22
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
1 janvier 2008

Merci Nikoui pour ta réponse rapide...

Pas bête en effet, je teste ça dès que possible et je post...
Messages postés
22
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
1 janvier 2008

Encore merci Nikoui, j'ai testé et ca a l'air de fonctionner...
Mais voilà, reste toujours mon premier problème, je comprned vraiment pas pourquoi j'obtiens pas de scrollbar sur mon formulaire qui pourtant contient un GroupBox plus grand que lui et qui a ses propriétés Autoscroll et Autosize à true...

Quelqun aurait-il une idée ??
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Pour le problème du scroll, comme tu as visiblement plusieurs conteneurs imbriqués, vérifie que les propriétés autoscroll sont bien paramétrée pour chaque. Vérifie aussi les propriétés "anchor" et "dock".

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr