Member 12870035 Ответов: 1

Как переместить кнопку и текстовое поле при прокрутке richtext box


Привет,
Я добавил элемент управления label, элемент управления button и элемент управления textbox в RichTextBox, но когда текст увеличивается
и появляется полоса прокрутки, кнопка управления меткой и элемент управления текстовым полем не прокручиваются вместе с
текст.... Может ли какой - либо орган предложить решение для этого...

Я буду вам очень благодарен

С уважением,
Аяз Ахмед

Что я уже пробовал:

я хочу сделать их подвижными, как вариант прокрутки google и youtube

BillWoodruff

Вы хотите сказать, что хотите, чтобы кнопка, метка, текстовое поле были прикреплены к определенной точке в RichTextBox ? Что же происходит, когда текст редактируется, вырезается или вставляется новый текст ? Исчезают ли эти элементы управления, когда текст, с которым они связаны, прокручивается вне поля зрения ?

1 Ответов

Рейтинг:
1

jekin77

Сначала вы должны принести Вам кнопку перед RichTextBox позвонив по телефону

Button.BringToFront();

Затем вы подписываетесь на событие RichTextBox VScroll
RichTextBox.VScroll+= RichTextBox_VScroll;

в этом случае вызовите фактическое положение полосы прокрутки см. GetScrollPos() Метод
Наконец вычислите и установите местоположение кнопки с помощью HorizontalPosition и VerticalPosition
private void RichTextBox_VScroll(object sender, EventArgs e)
{
   var X_POS = //calculate it by using HorizontalPosition
   var Y_POS = //calculate it by using VerticalPosition
   Button.Location = new System.Drawing.Point(X_POS, Y_POS);
}


Чтобы получить положение полосы прокрутки используйте этот фрагмент кода
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int GetScrollPos(IntPtr hWnd, int nBar);

private const int SB_HORZ = 0x0;
private const int SB_VERT = 0x1;
    
public int HorizontalPosition
{
    get { return GetScrollPos((IntPtr)this.Handle, SB_HORZ); }
}

public int VerticalPosition
{
    get { return GetScrollPos((IntPtr)this.Handle, SB_VERT); }
}