[C#] Autocomplétion, problème r/w memory
pti_jul
Messages postés
93
Statut
Membre
-
Ping -
Ping -
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):
Voici l'activation de l'autocomplétion auprès de mon TextBox :
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 :
D'avance merci pour vos conseils ou solutions.
Bonne soirée à vous
pti_jul
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
A voir également:
- [C#] Autocomplétion, problème r/w memory
- Windows memory cleaner - Télécharger - Optimisation
- Windows memory diagnostic - Télécharger - Optimisation
- R-linux - Télécharger - Sauvegarde
- Sfc /scannow /f /r - Guide
- Wise memory optimizer avis ✓ - Forum Stockage
3 réponses
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 :
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
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_KeyPress);
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
Yann
Même probleme t'as trouvé une soluce ?
barboe
same for me