[gelöst]Cursorposition setzen in TextBox



  • Ich habe zum Editieren einer TextBox eine zweite Form mit einer virtuellen Tastatur für Touchscreens eingerichtet, die sauber läuft und
    den Inhalt zur Hauptform überträgt. Es fehlt jedoch die Anzeige und das Setzen des Cursors, was ich mit einer Delegate-Methode
    versuche. Das gefeuerte Event kommt in der Hauptform an, jedoch wird der Cursor nicht angezeigt.

    Hier der bisherige Code:

    private void Form1_Load(object sender, EventArgs e)
            {
                this.BackColor = Color.LightGray;
                button1.Text = " X ";
                button2.Text = "Enter";
                label1.Text  = "";
                this.Text    = "Form)";
                // Position dieser Form
                Point p = new Point();
                p.X = 10;
                p.Y = 10;
                this.Location = p;
                this.TopMost  = false;
                // -------------------------------------------------------------------------
                // Aufruf der Form100 (VirtualKeyboard)
                // -------------------------------------------------------------------------
                p.X = 15;
                p.Y = 170;
                form100 = new Form100(this, textBox1, p);
                form100.delegatePos += new Form100.DelegatePos(SetCursorPos);
                form100.Show();
            }
    
            private void SetCursorPos(object sender, int pos)
            {
                // --------------------------------------------------------------------------
                // Delegate-Methode von Form100
                // --------------------------------------------------------------------------
                MessageBox.Show("Form1 / SetCursorPos    " + pos.ToString());
                textBox1.SelectionStart = pos;
            }
    


  • Der Cursor wird immer nur im aktiven Eingabefeld angezeigt, hast du das beachtet?

    textBox1.Focus();
    textBox1.SelectionStart = pos;
    // $$ Wichtig! Sonst markiert er dir ab pos alle Zeichen
    textBox1.SelectionLength = 0;
    

    // EDIT:
    Die Form und die Textbox würde ich übrigens nicht in ein anderes Form weitergeben. Dir geht es da doch sicher nur darum das Zeichen einzugeben korrekt? Dann wäre aus meiner Sicht richtiger dein Event dahingehend anzupassen, dass Eingegebene Zeichen und Position zurück geliefert werden.



  • Danke für die Hinweise! 👍
    Jetzt wird der Cursor in der Hauptform ordnungsgemäss angezeigt. Eine gesonderte Form möchte ich beibehalten wegen
    der besseren Wiederverwendbarkeit in mehreren Forms oder Projekten. Zielvorstellung: dll



  • Gegen deine gesonderte Form hatte ich ja nichts einzuwenden. Eher gegen die Tatsache, dass du das aufrufende Form und die Textbox im Konstruktor deines Forms übergibst.


Log in to reply