2017-06-13 5 views
0

Wie platziert man die button vor der Linie, wo der Marker gesetzt ist? Die button sollte direkt vor der Zeichenfolge platziert werden. Wenn der Benutzer den Marker verschiebt, wird button in eine andere Zeichenfolge verschoben. Wie im Bild.Platzieren Sie den Knopf vor der Zeichenfolge

Im Moment wird die button gegenüber der Zeile angezeigt, wo die click aufgetreten ist.

 private void richTextBox1_MouseClick(object sender, MouseEventArgs e) 
    { 
     buttonaddmenu.Visible = true; 

     int index = richTextBox1.SelectionStart; 
     int line = richTextBox1.GetLineFromCharIndex(index); 
     buttonaddmenu.Visible = true; 
     int x = richTextBox1.Location.X - 10; 
     int y = 25; 

     for (int i = 0; i < richTextBox1.Lines.Length; i++) 
     { 
      buttonaddmenu.Location = new Point(3, Cursor.Position.Y - 170); 
     } 
    } 

enter image description here

+1

Es ist nicht ganz klar, w Du meinst mit "vor" und "gegenüber" die Linie. Kannst du es genau erklären? –

+0

Wo ist die erwartete Position? Wo ist "vor der Linie"? – Sweeper

+0

Ich verstehe auch nicht, warum Sie eine for-Schleife haben, wo die innere Anweisung immer die gleiche ist –

Antwort

1

können Sie die neue Position basierend auf Knopfgröße ändern (meine Knopfgröße 21, 23) durch Erhöhen oder Verringern der x- und y-Abnahme (zB: locationOnForm.X-20) versuchen Sie dies:

 private void richTextBox1_SelectionChanged(object sender, EventArgs e) 
     { 
     var pos = richTextBox1.GetPositionFromCharIndex(richTextBox1.SelectionStart); 
     Point locationOnForm = richTextBox1.FindForm().PointToClient(richTextBox1.Parent.PointToScreen(richTextBox1.Location)); 
     Point newLocation = new Point(locationOnForm.X-20, 
          pos.Y + locationOnForm.Y); 
     button2.Location = newLocation; 
     } 

aktualisieren

 Point locationOnForm = panel1.FindForm().PointToClient(panel1.Parent.PointToScreen(richTextBox1.Location)); 
+0

Aber wie den Knopf gegenüber der Zeichenfolge platzieren? Die Schaltfläche sollte nur vertikal verschoben werden. – Kaya

+0

Antwort aktualisiert bitte überprüfen –

+0

Sorry, es gibt noch eine Frage. Wie zeige ich diese Schaltfläche im Panel und nicht im Formular an? – Kaya

Verwandte Themen