Scroll в RichTextBox и LinkLabel

99
07 февраля 2022, 23:40

Вывожу в RichTextBox список LinkLabel-ов.

Всё норм! Но если в папке много файлов то получается так

То что не влезло в экран не видно и не как не добраться. Если сделать на весь экран, ссылок станет больше. Но опять же, если они не помещаются в экран, их не видно и добраться до них, ни как нельзя.

Пробовал так:

// Метод для вывода ссылок
private void ListOpenFoldersFile(List<LinkLabel> listLinked)
        {
            InfoWindowRich.Controls.Clear();
            foreach (var item in listLinked)
            {
                item.Click += LinkedLabelClicked;
                InfoWindowRich.Controls.Add(item);
                // Скролл
                InfoWindowRich.SelectionStart = item.Text.Length;
                InfoWindowRich.ScrollToCaret();
            }
        }
// Формирование ссылок
public void CreateLinkLabel(string pathFolder, List<LinkLabel> listLinkedLabelFile, string selectedExtension)
        {
            string[] inf = Directory.GetFiles(pathFolder, $"*{selectedExtension}", SearchOption.TopDirectoryOnly);
            for (var i = 0; i < inf.Length; i++)
            {
                listLinkedLabelFile.Add(new LinkLabel()
                {
                    Text = inf[i],
                    Location = new Point(0, i * 20),
                    AutoSize = true,
                    Font = new Font("Segoe UI", 13), //Segoe UI Semibold; 11,25pt; style=Bold
                    VisitedLinkColor = Color.FromArgb(52, 73, 94),
                    LinkColor = Color.FromArgb(51, 51, 51), // 255, 215, 71 yellow rgb(52, 152, 219) url
                    ActiveLinkColor = Color.FromArgb(52, 73, 94),
                    LinkBehavior = LinkBehavior.NeverUnderline,
                    Name = inf[i],
                    Links =
                    {
                        new LinkLabel.Link()
                        {
                            Name = inf[i]
                        }
                    }
                });
            }
// При нажатии на ссылку
private void LinkedLabelClicked(object sender, EventArgs e)
        {
            var linkLabel = sender as LinkLabel;
            if (linkLabel == null)
                return;
            linkLabel.LinkVisited = true;
            Process.Start(linkLabel.Links[0].Name);
        }

Так же пробовал включать разные настройки в дизайнере, не чего не помогло. Как можно решить данную проблему? Может кто сталкивался?

Я предполагаю, что ссылки выводятся в окно RichTextBox, но находятся по верх элемента RichTextBox. По этому и настройки не применяться. Но как решить не пойму.

Answer 1

Скорее всего RichTextBox и ListBox не предназначены для таких целей.Так как, они видимо могут определять только текстовую информацию, а я передaвал объекты LinkLabel. Проблему решил с помощью Panel. Заменил RichTextBox на Panel InfoWindowRich.Controls.Add(item); на panel1.Controls.Add(item); и в свойствах включил AutoScroll.

READ ALSO
Метод Рунге-Кутта 4-го порядка для CДУ C#

Метод Рунге-Кутта 4-го порядка для CДУ C#

Нужно решить систему из двух дифференциальных уравнений методом Рунге-Кутты 4-го порядка с коррекцией шага по правилу Рунге

143
Построение оптимального сплайна Безье (C#). Проблема с нахождением контрольных точек

Построение оптимального сплайна Безье (C#). Проблема с нахождением контрольных точек

Реализую свой метод интерполяции сплайна Безье дефекта 1Перед написанием кода вдохновлялся этим Построение оптимального сплайна Безье

81
выводит такую ошибку помогите -IndexOutOfRangeException: Array index is out of range в Unity

выводит такую ошибку помогите -IndexOutOfRangeException: Array index is out of range в Unity

пишу скрипт для unity, на движение колес машины при нажатии на кнопку она должна ехать но при запуске сцены выдаёт неприятную ошибку и я не знаю...

135
Перестал работать yield return new WaitForSeconds (unity3d)

Перестал работать yield return new WaitForSeconds (unity3d)

Во всей игре внезапно перестал работать yield return new WaitForSeconds

125