Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    10

    [C#] Sapere posizione del cursore

    Ciao a tutti, sto facendo un piccolo editor di testo usando una richtextbox modificata e mi servirebbe sapere la posizione del "cursore" di scrittura in pixel... Solo che non ho idea di come poter fare... Potete darmi qualche suggerimento? Grazie in anticipo

  2. #2
    Se vuoi sapere dove si trova il cursore del Mouse usa la classe Cursor, tipo: Cursor.Position. Se invece vuoi sapere dove si trova il cursore nella TextBox, usa la proprieta' SelectionStart della TextBox.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    10
    No, quello che dovevo fare è più complesso, mi serviva calcolare la posizione in pixel del cursore della textbox e ci sono riuscito, per cui si può chiudere il topic

  4. #4
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Bè, lo spirito del forum vorrebbe che tu postassi la tua soluzione, per aiutare anche altri utenti che possono avere il tuo stesso problema.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    10
    Certamente ecco qua:
    Con queste 2 funzioni (Che ho inserito nella mia custom RTB) ricavo il testo della linea "selezionata" dall'inizio alla posizione del cursore di scrittura:

    codice:
            public string getCurrentLine(string text, int selstart)
            {
                string r2 = "";
                int x = selstart;
                r2 = text.Substring(0, x);
                int l = r2.LastIndexOf("\n") + 1;
                text = r2.Substring(l); ;
                l = text.IndexOf("\n");
                if (l > -1) text = text.Substring(0, l);
                return text;
            }
    
            public int getCurrentLineIndex()
            {
                string lineText = this.getCurrentLine(this.Text, this.SelectionStart);
                int lineCount = 0;
                foreach (string line in this.Lines)
                {
                    lineCount += 1;
                    if (line.StartsWith(lineText))
                    {
                        return lineCount;
                    }
                }
                return 0;
            }
    Dopo di che grazie a questa (Che ho inserito in un form) ottengo la dimensione del testo:
    codice:
                            int lineCount = r.getCurrentLineIndex();
                            SizeF size;
                            using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1)))
                            {
                                size = graphics.MeasureString(Charz, r.Font);
                            }
                            l.Location = new Point((int)size.Width, 11 * lineCount + 3);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.