begin process at 2012 02 10 11:32:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

MouseDown sur Datagrid


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

MouseDown sur Datagrid

jeudi 8 juin 2006 à 17:40:36 | MouseDown sur Datagrid

toto9o59

Voilà j'utilise Visual Studio .NET 2003 et j'ai une erreur "Une exception non gérée du type 'System.InvalidCastException'..." qui se situe au niveaux de "protected void dataGrid1_MouseDown {" les lignes "MycolumnStyle gridCol = (MyColumnStyle)..."
Ca dois être surement un erreur bête, en faite je patoge depuis 2 jours a cause de ça.
J'affiche ma form1.cs compléte !!
Vous étes mon dernier recours !
Merci d'avance.

[CODE]
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace test
{
    /// <summary>
    /// Description résumée de Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.DataGrid dataGrid1;
        /// <summary>
        /// Variable nécessaire au concepteur.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Requis pour la prise en charge du Concepteur Windows Forms
            //
            InitializeComponent();

            //
            // TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
            //
        }

        /// <summary>
        /// Nettoyage des ressources utilisées.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Code généré par le Concepteur Windows Form
        /// <summary>
        /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
        /// le contenu de cette méthode avec l'éditeur de code.
        /// </summary>
        private void InitializeComponent()
        {
            this.dataGrid1 = new System.Windows.Forms.DataGrid();
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
            this.SuspendLayout();
            //
            // dataGrid1
            //
            this.dataGrid1.DataMember = "";
            this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dataGrid1.Location = new System.Drawing.Point(40, 16);
            this.dataGrid1.Name = "dataGrid1";
            this.dataGrid1.Size = new System.Drawing.Size(408, 328);
            this.dataGrid1.TabIndex = 0;
            this.dataGrid1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.dataGrid1_MouseDown);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(504, 373);
            this.Controls.Add(this.dataGrid1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }
        private void AjoutDataGridTableStyle()
        {
            DataGridTableStyle tableStyle = new DataGridTableStyle();
            DataTable dt = (DataTable) myDataSet.Tables["Clients"];
            tableStyle.MappingName = dt.TableName;

            for(int j = 0; j < dt.Columns.Count; ++j)
            {
                DataGridTextBoxColumn cs = new DataGridTextBoxColumn();
                cs.MappingName = dt.Columns[j].ColumnName;
                cs.HeaderText = dt.Columns[j].ColumnName;
                tableStyle.GridColumnStyles.Add(cs);
            }

            dataGrid1.TableStyles.Clear();
            dataGrid1.TableStyles.Add(tableStyle);
        }
        private void Form1_Load(object sender, System.EventArgs e)
        {
            CreationDataSet();
            AjoutDataGridTableStyle();    
            dataGrid1.DataSource = myDataSet.Tables["Clients"];
        }
        private DataSet myDataSet;
        private void CreationDataSet()
        {
            // Création d'un DataSet
            myDataSet = new DataSet("myDataSet");
    
            // Création de la DataTable "Clients"
            DataTable tClients = new DataTable("Clients");
            
            // Création de 4 colonnes, et ajout de ces colonnes à la table.
            tClients.Columns.Add(new DataColumn("Id", Type.GetType("System.Int32")));
            tClients.Columns.Add(new DataColumn("Nom", Type.GetType("System.String")));
            tClients.Columns.Add(new DataColumn("Prenom", Type.GetType("System.String")));
            tClients.Columns.Add(new DataColumn("CodeVille", Type.GetType("System.String")));
    
            // Création de 5 enregistrements dans la table "Clients"
            tClients.Rows.Add(new Object[] {0, "Dupond", "Pierre", "PAR"});
            tClients.Rows.Add(new Object[] {1, "Smith", "John", "LON"});
            tClients.Rows.Add(new Object[] {2, "Gonzales", "Pedro", "MAD"});
            tClients.Rows.Add(new Object[] {3, "Durand", "Bernadette", "PAR"});
            tClients.Rows.Add(new Object[] {4, "Dickinson", "Paul", "LON"});

            // Ajout de la Table "Clients" au DataSet
            myDataSet.Tables.Add(tClients);


            // Création de la DataTable "Villes"
            DataTable tVilles = new DataTable("Villes");
            
            // Création de 2 colonnes, et ajout de ces colonnes à la table.
            tVilles.Columns.Add(new DataColumn("CodeVille", Type.GetType("System.String")));
            tVilles.Columns.Add(new DataColumn("Libelle", Type.GetType("System.String")));
                
            // Création de 3 enregistrements dans la table "Villes"
            tVilles.Rows.Add(new Object[] {"PAR", "Paris"});
            tVilles.Rows.Add(new Object[] {"LON", "Londres"});
            tVilles.Rows.Add(new Object[] {"MAD", "Madrid"});

            // Ajout de la Table "Villes" au DataSet
            myDataSet.Tables.Add(tVilles);
                       
        }
        public class MyColumnStyle:DataGridTextBoxColumn
        {
            public void EditVal(CurrencyManager cm, int row, Rectangle rec,
                bool readOnly, string text)
            {
                this.Edit(cm, row, rec, readOnly, text);
            }
        }
        protected void dataGrid1_MouseDown(object sender, MouseEventArgs e)
        {
            // Use the HitTest method to get a HitTestInfo object.
            System.Windows.Forms.DataGrid.HitTestInfo hi;   
            DataGrid grid = (DataGrid) sender;
            hi=grid.HitTest(e.X, e.Y);
            // Test if the clicked area was a cell.
            if (hi.Type==DataGrid.HitTestType.Cell)
            {
                // If it's a cell, get the GridTable and CurrencyManager of the
                // clicked table.         
                DataGridTableStyle dgt = grid.TableStyles[0];     
                CurrencyManager myCurrencyManager = (CurrencyManager)
                    this.BindingContext[myDataSet.Tables[dgt.MappingName]];
                // Get the Rectangle of the clicked cell.
                Rectangle cellRect;
                cellRect=grid.GetCellBounds(hi.Row, hi.Column);
                // Get the clicked DataGridTextBoxColumn.
                MyColumnStyle gridCol =(MyColumnStyle)
                    dgt.GridColumnStyles[hi.Column];
                // Edit the value.
                gridCol.EditVal(myCurrencyManager, hi.Row, cellRect, false, "New Text");
            }
        }

    }
}
[/CODE]
vendredi 9 juin 2006 à 09:50:16 | Re : MouveDown sur Datagrid

sebmafate

Membre Club Administrateur CodeS-SourceS
ce n'était pas la peine de mettre tout le code de la classe... bref.

MyColumnStyle gridCol =(MyColumnStyle) dgt.GridColumnStyles[hi.Column];

En fait, c'est normal... car MyColumnStyle hérite surement de DataGridColumnStyle... qui est le type de dgt.GridColumnStyles[hi.Column].

en gros, tu peux faire :
DataGridColumnStyle gridCol = dgt.GridColumnStyles[hi.Column];

En programmation objet, tu peux "caster" en remontant et non en descendant (normal, puisque la classe mère ne possède pas forcément les mêmes mmbres que la classe fille)


Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft MVP Visual C#]

vendredi 30 juin 2006 à 10:21:31 | Re : MouseDown sur Datagrid

toto9o59

Réponse acceptée !
Désolé, l'erreur reste toujours la même !!
Mais j'ai trouvé un autre moyen de coder la tâche que je voulais, en faisant un copie de mon dataset etc...
Merci quand même !!


Cette discussion est classée dans : system, add, object, datagrid1, tclients


Répondre à ce message

Sujets en rapport avec ce message

Problème de destruction d'objet (System.ObjectDisposedException : Cannot access a disposed object) [ par olivet ] Bonjour, J'ai un petit problème dans mon application... pourquoi ca marche pas???En fait c une appli winform qui démarre avec une form de connexion qu pb de propriétés dans dataset [ par cococo84 ] bonjour, g créé un dataset(voir ci-dessous),et je voudrais associer des propriétés(cf dw1() et dw2()) pour chaque cellules(cf calculsgéo.Rows.Add(new plantage du prog [ par shinevilkyo ] lu all,j ai code un explorateur win en csharp eilmarche super sur le dd ou sur tt disque logique mais kan le contenue est trop gros a afficher ds une modifier une donnée dans un datagrid??? [ par jngwolf44 ] salut,voilà le problème j'arrive bien a creer une base de donnée en memoire avec un datagrid, j'arrive a le remplir avec des données, a consulter les probleme Cast [ par sheorogath ] bonjour, je debute en c# et je fais un programme permettant d'uploader une image sur un ftp a intervalle reguliéj'avais tout fais mais j'ai changé de Lancement d'une macro excel avec C# et PHP [ par mdelahais ] Bonjour, J'ai créé un programme c# qui lance une macro de mise en forme Excel. J'ai testé ce programme en ligne de commande et il fonctionne. Ce progr [.NET2] Probleme de copie d'un objet entre thread [ par iow4 ] Bonjour, Je developpe actuellement une application multi-thread avec des délégués asynchrone. La fonction attachée au délégués prend en parametre un l rappelle de fonction qui ne marche qu'une foi [ par leroitony ] Salut à tous voila je me retrouve bloquer par mon code je vais essayer d'etre claire pour que vous compreniere ce que j'ai fais tout ce deroule sur un probleme avec wmi : win2k3->ca marche; win2k->pas [ par Capitaine Iron ] voici le code que j'utilise pour récuperer une information avec wmi :ManagementScope WMIChemin=new ManagementScope("\\\\130.1.1.10\\root\\cimv2");    changements sur active directory [ par dorine82 ] Salut à tous, j'ai écrit un programme qui lit un fichier texte et le met dans un tableau et ensuite travaille avec c


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,981 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales