Warum gibt GetCharIndexFromPosition () für das letzte Zeichen der Textbox nicht ordnungsgemäß zurück?

public partial class Form1 : Form
{
    TextBox textBox;
    public Form1()
    {
        InitializeComponent();
        textBox = new TextBox() { Height = 30, Width = 200, Text = "Syncfusion Software", Font = new Font("Arial", 11) };
        textBox.MouseMove += textBox_MouseMove;
        this.Controls.Add(textBox);

    }

    void textBox_MouseMove(object sender, MouseEventArgs e)
    {
        var selectionStart = textBox.GetCharIndexFromPosition(e.Location);
        textBox.SelectionStart = selectionStart;
        textBox.SelectionLength = 0;
    }
}

Hier ist mein Code, dies ist ein einfaches Beispiel, das ich versucht habe, klare Informationen über @ zu erhaltGetCharIndexFromPosition() Methode vonTextBox.

Bei Mausbewegung erhalte ich die Zeichenindexposition anhand der aktuellen Mausposition des Textfelds und setze den Auswahlstart des Textfelds darauf basierend. Wenn ich die Maus bewege, wird der Start der Auswahl oder die Position des Einfügemarke basierend auf der Mausbewegung festgelegt. Beim Bewegen der Maus am Ende des Texts trat jedoch ein Problem auf. Der Start der Auswahl ist nicht auf "Letzte" festgelegt. es setzt vorletzte.

Wenn beispielsweise ein Textfeld den Text "stack" enthält und die Mausposition nach dem "k" liegt, sollte sich die Einfügemarke am Ende befinden, sie wird jedoch zwischen "c" und "k" angezeigt.GetCharIndexPosition() gibt den Wert für das letzte Zeichen nicht richtig zurück. Lass es mich wissen Lösung für dieses

Danke im Voraus

Grüße

Venkatesan R

Antworten auf die Frage(4)

Ihre Antwort auf die Frage