Question

Je travaille actuellement sur un projet en C # qui est assez simple.

J'ai une boîte d'état, deux boutons et un dataGridView.

Lorsque le formulaire est chargé, le dataGridView est rempli correctement.

Ce que je voudrais faire est ensuite de mettre à jour cette table toutes les 45 secondes pour refléter toute modification apportée à la base de données.

Je cherche des suggestions sur une technique pour y parvenir. Je cherchais des informations claires, mais cela me semble un peu insuffisant.

Était-ce utile?

La solution

  1. Ajoutez un contrôle Timer à votre formulaire. (C'est dans la catégorie des composants)
  2. Définissez sa propriété Interval sur 45000 (la valeur représente des millisecondes)
  3. Définissez la propriété Enabled du temporisateur sur True dans le concepteur de formulaire ou quelque part dans votre code.
  4. Ajouter un gestionnaire pour l'événement Tick du minuteur (vous pouvez l'obtenir en double-cliquant sur le minuteur)
  5. Dans le gestionnaire Tick , mettez à jour votre dataGridView

Votre gestionnaire ressemblera à ceci:

private void timer1_Tick(object sender, EventArgs e)
{
    // Update DataGridView
}

Si vous devez suspendre les mises à jour pour une raison quelconque, vous pouvez appeler timer1.Stop () pour arrêter l'exécution du chronomètre et utiliser timer1.Start () pour redémarrez-le.

Autres conseils

Comme d'autres l'ont suggéré, utilisez un minuteur pour actualiser la base de données. La seule chose que j'aimerais ajouter, c'est que lorsque vous interrogez à nouveau la base de données, ne définissez pas simplement la source de données de DataGridView sur la nouvelle table. Au contraire, fusionnez-le avec la table existante. La raison en est que si l'utilisateur se trouve au milieu de la grille, par exemple en regardant une ligne particulière, si vous réinitialisez la source de données sur une nouvelle table, la grille entière s'actualisera et perdra sa place. Ennuyant comme l'enfer! Si vous le fusionnez , il sera transparent pour l'utilisateur.

DataTable.Merge

Lors de l’utilisation de la méthode Merge, il faut savoir que la table doit avoir une clé primaire. Revérifiez pour vous assurer que le DataTable lui-même a une clé primaire. Ce n'est pas toujours le retirer de la base de données. Vous devrez peut-être faire quelque chose comme:

table.PrimaryKey = new DataColumn[] {table.Columns["ID"]};

Utilisez un contrôle du minuteur, puis effectuez les mises à jour aux incréments spécifiques dont vous avez besoin.

Vous pouvez créer un minuterie . qui se déclenche toutes les 45 secondes et met à jour votre interface utilisateur à partir de son gestionnaire d'événements.

vous voulez dire que je devrais relier datagridview à nouveau dans le gestionnaire d'événements Timer?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top