Désactiver le curseur Textbox

Signaler
Messages postés
41
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
30 juin 2011
-
Messages postés
41
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
30 juin 2011
-
Bonjour,

J'aimerais savoir comment il serait possible de désactiver le curseur dans un textbox ou un richtexbox.

J'espère que cette opération est possible en .NET car à chaque fois que quelqu'un à posé cette question sur le forum il n'a pas eu de réponse (à croire que ce sujet est tabou ). 

Merci d'avance

10 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

tu peux utiliser l'API HIDECARET

à utiliser alors dans le _Load de la form, et dans le _GetFocus de la zone en question

en VB6 :






Option Explicit


Private Declare Function 
HideCaret 
Lib 
"user32" 
(
ByVal 
hwnd 
As Long

As Long




Private Sub 
Form_Load()

    HideCaret Text1.hwnd
End Sub

Private Sub Text1_GotFocus()
    HideCaret Text1.hwnd
End Sub





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>








à adapter en VB.NET, l'API est alors :


Private Declare Function 
HideCaret 
Lib 
"user32" 
(
ByVal 
hwnd 
As INTPTR

As



INTEGER






++
Messages postés
41
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
30 juin 2011

Je suis désolé PCPT mais je ne comprend à quoi correspond "Text1". Est-il normal que l'on ne cite jamais le nom de la textbox dont on veux supprimer le curseur?

Le code ne marche pas et les deux 'Text1' sont considérés comme "non déclaré", je m'y suis surement mal pris, voici ce que j'ai tapé:

Public

Class Form1 

Private
Declare
Function HideCaret
Lib
"user32" (
ByVal hwnd
As IntPtr)
As
Integer 

Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.LoadHideCaret(Text1.hwnd)

End
Sub

Private
Sub RichTextBox1_GotFocus()HideCaret(Text1.hwnd)

End
SubEnd

Class
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
ton titre parle d'une zone de texte OU zone riche....

je t'ai fais un exemple avec une zone de texte (text1), en vb6....

BREF




Public Class Form1

  Private Declare Function HideCaret Lib"user32" (ByVal hwnd As IntPtr) As Integer

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   HideCaret(RichTextBox1.handle)

  End Sub

  Private Sub RichTextBox1_GotFocus()

    HideCaret(RichTextBox1.handle)




  End Sub







End Class






<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->

Coloration syntaxique vb/vba/vb.net
Messages postés
41
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
30 juin 2011

Oui je me doutais bien que c'était pour l'exemple mais quand j'avais testé avec 'Richtextbox1' à la place de 'Text1' l'erreur était pire.

J'ai aussi remplacé les '.hwnd' par des '.handle' et là miracle plus d'erreur.....Sauf que quand je lance mon application le curseur est toujours là (même si ma richtextbox est en 'readonly =true')
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
fait le au _SHOW ou équivalent
Messages postés
41
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
30 juin 2011

Désolé mais ça ne marche toujours pas... même avec richtextbox1_Show() , richtextbox1_Click() ou _GetFocus()

As-tu essayé le code?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
je parlais de show (_shown plutôt) de la form
j'avais essayé en vb6 sur une textbox

je viens d'essayer en vb2008 avec une richtextbox, j'ai juste eu besoin d'ajouter le même appel dans le RichTextBox1_MouseDown
Messages postés
41
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
30 juin 2011

C'est incroyable, le code ne change absolument rien de mon côté, j'y ai pourtant sortie toute la panoplie d'évènement! voici exactement le code:


Public
Class Form1




Private





Declare





Function

HideCaret


Lib





"user32"

(


ByVal

hwnd


As

IntPtr)


As





Integer



 









Private





Sub

Form1_Load(


ByVal

sender


As

System.Object,


ByVal

e


As

System.EventArgs)


Handles





MyBase

.LoadHideCaret(RichTextBox1.Handle)



End





Sub








Private





Sub

RichTextBox1_MouseDown()HideCaret(RichTextBox1.Handle)



End





Sub








Private





Sub

Form1_Shown()HideCaret(RichTextBox1.Handle)



End





Sub








Private





Sub

RichTextBox1_GotFocus()HideCaret(RichTextBox1.Handle)



End





SubEnd







Class






 
Messages postés
41
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
30 juin 2011

PCPT à l'aide! Ne me lache pas si près du but!!!
Messages postés
41
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
30 juin 2011

Up!