IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Insertion dans un TextBox à la position du curseur


Sujet :

Windows Forms

  1. #1
    Membre confirmé Avatar de papouAlain
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 127
    Par défaut [C#] Insertion dans un TextBox à la position du curseur
    Je ne trouve pas comment faire une insertion dans un Controle TextBox à la position courante du curseur...

    un tuyau ?

  2. #2
    Membre expérimenté Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
            private void button1_Click(object sender, EventArgs e)
            {
                Point monPoint = Cursor.Position;
                monPoint.Y -= Cursor.Size.Height;
                if (monPoint.X < this.Location.X || monPoint.Y < this.Location.Y ||
                    monPoint.X > this.Location.X + this.Size.Width || monPoint.Y > this.Location.Y + this.Size.Height)
                {
                    MessageBox.Show("Vous êtes en dehors de la form !");
                    return;
                }
                monPoint.X -= this.Location.X;
                monPoint.Y -= this.Location.Y;
                TextBox txt = new TextBox();
                txt.Location = monPoint;
                txt.Text = "Je suis une belle textBox !";
                this.Controls.Add(txt);
            }
    Ca devrai suffire non ?

  3. #3
    Membre confirmé Avatar de papouAlain
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 127
    Par défaut
    merci.
    ton exemple est plutot pas mal, mais ce que je cherche c'est à insérer dans une TextBox déjà existante à l'écran.
    Je ne souhaite pas la rajouter à la position du curseur.
    ce qui me manque, c'est comment obtenir la position dans TxtPresentation.Text correspondant à celle du curseur à l'écran, dans le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    			Point monPoint = Cursor.Position;
    			if (monPoint.X >= txtPresentation.Location.X || monPoint.Y >= txtPresentation.Location.Y || 
    				monPoint.X <= txtPresentation.Location.X + txtPresentation.Size.Width || monPoint.Y <= txtPresentation.Location.Y + txtPresentation.Size.Height) 
    			{
    						txtPresentation.Text.Insert(??? int position ??? , TextInserted);
    			}

  4. #4
    Membre expérimenté Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Par défaut
    Citation Envoyé par papouAlain
    merci.
    ton exemple est plutot pas mal, mais ce que je cherche c'est à insérer dans une TextBox déjà existante à l'écran.
    Mais j'étais pas mal à l'ouest aussi Ca m'apprendra à lire les posts à la va-vite. Voici ce que tu cherchais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    private void button1_Click(object sender, EventArgs e)
            {
                 Point monPoint = Cursor.Position;
                 //On retire la hauteur et la largeur du curseur qui ne sont pas incluses dans la position.
                 //On divise les deux par 2 car IBeam est un curseur dont le pointeur est au milieu !
                 monPoint.Y -= (Cursor.Size.Height / 2);
                 monPoint.X -= (Cursor.Size.Width / 2);
                 //On calcule la position "relative" de notre curseur dans notre TextBox.
                 monPoint.X -= (this.Location.X + txtPresentation.Location.X);
                 monPoint.Y -= (this.Location.Y + txtPresentation.Location.Y);
                 //On vérifie qu'il est bien dans la textBox.
                 if (monPoint.X >= 0 && monPoint.Y >= 0 && 
                      monPoint.X <= txtPresentation.Size.Width &&
                      monPoint.Y <= txtPresentation.Size.Height)
                {
                    //On regarde où il est... Cette valeur est en Pixel or les polices ont des valeurs
                    //données en Point.
                    double index = monPoint.X;
                    //Cette opération permet de convertir de Point vers un index valide.
                    //Pour info 36 = 72 / 2 ce qui correspond à la définition sous Windows si je ne me trompe pas.
                    index /= (36 / txtPresentation.Font.Size); 
                    //Si l'index est bien dans les limites de notre texte, on rajoute notre texte au bon index.
                    if(index < txtPresentation.Text.Length)
                        txtPresentation.Text = txtPresentation.Text.Insert((int)index, "[Je suis un texte ajouté]");
                } 
            }
    PS : Ma solution était tellement tordue que je l'ai commentée.
    PPS : Tu l'auras deviné, cela ne marche que si le texte affiché à l'écran est le texte à gauche de la textBox... Doit bien y avoir un membre qui permet de savoir quel texte est affiché sur la textBox

  5. #5
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    Salut,
    Tu veux juste insérer du texte à la position du curseur dans la textbox, c'est ca? Dans ce cas moi je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taTextbox.Text.Insert(taTextbox.SelectionStart, "du texte")
    Et ça fonctionne tres bien.

  6. #6
    Membre expérimenté Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Par défaut
    Euhh je crois que je suis encore à l'ouest alors... Moi j'avais compris le curseur de la souris ... Si c'est pas de celui-là dont il est question alors oui graphicsxp, la solution était pas plus compliquée.
    Bon allez je retourne faire des tests de compréhension du français

  7. #7
    Membre confirmé Avatar de papouAlain
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 127
    Par défaut
    merci à graphicsxp
    t'en fais pas DeusXL, faut percevérer...
    ou alors t'es comme moi il faut seulement que t'accepte de ne faire que 1999 choses à la fois et pas 2000...
    merci à tous les deux quand même !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Insertion dans une textbox avec du texte enrichi
    Par dumas.blr dans le forum IHM
    Réponses: 0
    Dernier message: 31/12/2012, 15h57
  2. Réponses: 0
    Dernier message: 10/04/2012, 21h50
  3. Position en pixel du curseur dans un TextBox
    Par nihaoma dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/02/2007, 13h51
  4. [VB6] position du curseur dans une zone texte et insertion caractere
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/05/2006, 09h52
  5. [VB.NET] Position ScrollBar dans un TextBox
    Par daner06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/02/2006, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo