2010-07-13 4 views
1

Hiicomment obtenir FindControl Méthode application de bureau en C#

Iam pas en mesure de trouver le FindControl Method.this est l'événement "_CellEndEdit (expéditeur d'objet, DataGridViewCellEventArgs e)" dans lequel Iam essayant d'accéder FindControl .. ..mais je ne vois pas cette méthode ... s'il vous plaît dites-moi comment puis-je accéder à cette méthode ...

+0

S'il vous plaît envoyez un code (EDIT: ou au moins décrire ce que vous essayez d'atteindre ...). –

+0

Je veux valider les zones de texte dans la grille de données .... Je veux obtenir la valeur de la cellule en utilisant findcontrol et puis valider cette valeur pour vérifier si le texte d'entrée est dans le format requis ..... –

Répondre

0

Je crois FindControl est une méthode sur la classe Control dans l'espace de noms System.Web.UI. Dans WinForms, vous n'avez pas besoin de cela.

Quel contrôle cherchez-vous? Est-ce un contrôle d'édition de grille? Utiliserez-vous ce contrôle pour obtenir la valeur de la cellule?

Mise à jour: la valeur de la cellule est présentée sur la cellule elle-même, il n'est pas nécessaire de trouver le contrôle sous-jacent à la cellule. Les arguments d'événement contiennent la cellule elle-même, la valeur elle-même ou les RowIndex et ColumnIndex. En utilisant cette dernière, vous pouvez obtenir la cellule de la grille et revoir sa .Value propriété:

DataGridViewCell c = grid[colIndex, rowIndex]; 

Notez également il y a un événement CellValidating résiliable sur la grille qui semble plus adaptée à vos besoins.

+0

Je veux trouver les zones de texte qui sont présentes dans la grille de données .... oui je veux obtenir la valeur de la cellule afin que je puisse valider si les données d'entrée sont au format date .... mais seulement si j'obtiens FindControl :(y a-t-il un espace de noms Iam manquant? –

+0

CellValidating me donne la valeur de la première ligne et de la première colonne de la grille de données .... y at-il un moyen par lequel je peux obtenir la valeur de la cellule en cours d'édition .... –

+0

Il devrait être vous donner la cellule qui vient d'être éditée –

0

La méthode FindControl n'est disponible que pour les instances de la classe Control et ses descendants. Ainsi, vous pouvez l'appeler sur la forme comme

this.FindControl(...); 

EDIT
Quant à votre commentaire:

  1. L'événement _CellEndEdit est le bon endroit pour faire une telle validation. Vous devez généralement implémenter l'événement _CellValidating.
  2. Si vous devez utiliser _CellEndEdit pour valider les entrées, vous pouvez essayer d'utiliser la propriété EditingControl du DataGridView. Cela doit renvoyer le contrôle d'édition en cours pour la cellule si la cellule est en mode édition. Cependant, il se peut que l'événement _CellEndEdit soit appelé après le contrôle d'édition est déjà détruit.
  3. L'objet DataGridViewCellValidatingEventArgs passé à _CellEndEdit vous permet d'obtenir la valeur entrée et de définir la propriété Cancel (peut-être avec une erreur de cellule), de sorte que les modifications soient annulées.
+0

En supposant l'OP utilise WinForms, 'System.Windows.Forms.Control' n'a pas de méthode' FindControl'. WPF, je ne suis pas sûr de. –

+0

J'ai essayé ceci aussi .... mais cela n'a pas fonctionné ... La méthode de FindControl n'apparaît pas .... –

Questions connexes