rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[C#] Autocomplétion, problème r/w memory

Posté par pti_jul, le mardi 25 septembre 2007 à 17:31:05
Bonjour à vous tous

Après avoir répondu pendant quelques semaines aux internautes dans différents forums de CCM, c'est à mon tour d'avoir besoin de votre aide.

En effet, je programme en C# une petite application qui fait des requêtes sur une base de données.
J'ai une fenêtre avec deux TextBox. Le premier a l'autocomplétion (suggestion lors de la frappe) d'activé, le second nom.
Or le second fait planté de temps en temps le programme avec l'exception suivante :
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
La localisation de l'exception (en gras):
static void Main()
{
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new Form1());       
}


Voici l'activation de l'autocomplétion auprès de mon TextBox :

this.textBox2.AutoCompleteSource = AutoCompleteSource.CustomSource;
this.textBox2.AutoCompleteMode = AutoCompleteMode.Suggest;
this.textBox2.AutoCompleteCustomSource.Clear();
this.textBox2.AutoCompleteCustomSource.AddRange(Remplir_Noms­_Proposes());



Je suppose que comme l'autocomplétion modifie l'affichage du TextBox, la fenêtre également, il y a conflit par moment. L'exception est d'autant plus levée si je met Append à la place de Suggest dans le mode d'autocomplétion.

De plus, impossible de récupérer la touche ENTER frappé dans le 2ème textbox (avec l'autocomplétion) alors qu'avec EXACTEMENT le même code elle est récupérée dans le premier textbox.
Voici mon code de détection de la touche ENTER :

if (e.KeyChar == (char)Keys.Enter)
      Console.WriteLine("Touche ENTER pressée");
else
      Console.WriteLine("autre caractère pressé");


D'avance merci pour vos conseils ou solutions.

Bonne soirée à vous

pti_jul
Configuration: Windows XP
Internet Explorer 7.0
Répondre à pti_jul  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 pti_jul, le mercredi 26 septembre 2007 à 11:41:45
Rebonjour

Bon, finalement l'exception ne se lève plus. Il y avait visiblement doublon (j'avais mal interprété la configuration d'activation de l'autocomplétion, je l'activais à chaque fois dans le TextChanged pensant qu'il fallait mettre à jour à l'aide de AddRange (jvous l'ai dit, problème d'interprétation, c'est génial en fait autrement)).

J'ai cependant toujours un problème, il ne me prend pas en compte le caractère ENTER dans le textBox qui a l'autocomplétion d'activée (alors que l'espace est détecté).

Mon code est le suivant :
// 
// textBox2
// 
this.textBox2.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
this.textBox2.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
this.textBox2.AutoCompleteCustomSource.AddRange(Remplir_Noms­_Proposes());
this.textBox2.Location = new System.Drawing.Point(15, 74);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(100, 20);
this.textBox2.TabIndex = 3;
this.textBox2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox2_KeyP­ress);


private void textBox2_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
      Console.WriteLine("***APPEL textboxkeypress***");
       if (e.KeyChar == (char)Keys.Enter)
               Console.WriteLine("Touche ENTER pressée");
       else if (e.KeyChar == (char)Keys.Space)
               Console.WriteLine("Barre d'espace pressée");
       else
               Console.WriteLine("autre caractère pressé");
}

Si j'appuie sur Espace : ca affiche bien Barre d'espace pressée
Si j'appuie sur Enter, cela n'appelle même pas KeyPress (pas d'affichage de ***APPEL textboxkeypress***)
Si j'appuie sur Backspace il affiche bien autre caractère pressé
De plus, en tappant une lettre dans mon textBox, il affiche bien autre caractère pressé dans la console.

Quelqu'un aurait une idée de comment pouvior gérer le Enter. En effet, j'aimerai qu'il me propose un nom de client et j'appuie sur Enter et cela m'ouvre une fenêtre avec les infos détaillés du client (adresses, ...)

Merci beaucoup de votre aide.

Bonne journée

pti_jul
Répondre à pti_jul
Logiciels pertinents trouvés dans les téléchargements
Télécharger Ingres2006 R3 Windows 9.2.0Ingres2006 R3 Windows - Ingres est un SGBD Relationnel de classe entreprise sous licence GPL2. Retrouvez sur CCM un article sur le sujet ( petit...Catégorie: Bases de données
Licence: Open Source
Télécharger Word Viewer 2003Word Viewer - La visionneuse Word Viewer vous permet d'ouvrir des documents Word 2003 et des documents créés avec toutes les versions...Catégorie: Traitement de texte
Licence: Freeware/gratuit
Télécharger WinAVI Video Capture 2.0.0.1WinAVI Video Capture - WinAVI Video Capture peut capturer vos films en provenance de périphériques AV comme un magnétoscope, un camescope ou une...Catégorie: Edition vidéo
Licence: Freeware/gratuit
Télécharger Media Player Classic 6.4.9.0Media Player Classic - Media Player Classic est un lecteur vidéo reprenant l'apparence des premières version de Windows Media Player. Son apparence...Catégorie: Lecteurs vidéo
Licence: Open Source
Plus de logiciels gratuits sur « [C#] Autocomplétion, problème r/w memory »