C# : проблема с динамическим расположением макета

#c# #datagridview #flowlayoutpanel

Вопрос:

Я пытаюсь разработать редактор табулатур с определенным внешним видом, и я изо всех сил пытаюсь отобразить свои элементы управления так, как я хочу. Я думаю, что делаю это неправильно, поэтому мне нужна ваша помощь! Я работаю над визуальным Sutdio с помощью C# / Winforms.

В идеале это должно выглядеть так : [1]: https://i.stack.imgur.com/B3q5r.png

По сути, это лист формата А4, на котором я отображаю представление сетки данных с пользовательскими границами. По мере того как я постепенно заполняю представление datagrid, оно должно расширяться: я делаю это, динамически добавляя столбцы.

Проблема в том, что когда я достигаю правой границы листа, он должен расширяться на новой строке (например, панель компоновки потока: когда больше нет места, элемент управления добавляется в новую строку).

Мне это не удается. Если я добавлю больше столбцов в свой datagridview, вместо перехода на новую строку появится горизонтальная полоса прокрутки. Я попытался смешать свой datagridview с панелью flowlayout, но я не могу заставить это работать.

У тебя есть какие-нибудь идеи о том, как это сделать? Любая помощь будет высоко оценена.

ПРАВКА : Итак, на моей картинке сетка представляет подразделение ритма (с музыкальной точки зрения). Каждый такт разделен на 4 подразделения (=4 столбца).

Цифры представляют ноты на инструменте, и одновременно можно играть несколько нот (вот почему иногда в одном столбце 2 или более нот). Напротив, мы также можем воспроизводить 0 нот в данный момент времени, поэтому некоторые столбцы пусты. Пользователь пишет эти заметки

Следовательно, 1 такт = 1 сетка из 4 столбцов * 4 строк (одновременно может быть воспроизведено максимум 4 ноты).

Горизонтальная линия-это просто указание на то, следует ли играть ноту правой рукой (выше линии) или левой рукой (ниже линии). Когда пользователь пишет заметки, он решает, где их писать.

Каждый раз, когда я добавляю ритм, я добавляю 4 колонки. Таким образом, вся моя табулатура представляет собой сетку из 4 строк * X столбцов (X кратно 4), в которой пользователь пишет заметки, которые он хочет. Моя проблема в том, что я хотел бы «вырезать» свою сетку и отобразить ее на нескольких строках, чтобы она соответствовала листу формата А4.

Комментарии:

1. Добавьте свой код и задайте более конкретный вопрос, в чем именно заключается проблема

2. Я отредактировал свой пост, чтобы добавить описание картинки. ДжонГ : Я рассматривал возможность использования панели tablelayout, но я выбираю сетку данных для двух следующих функций : — можно выполнить множественный выбор ячеек в представлении datagrid — представление datagrid позволяет перемещаться между ячейками с помощью клавиш со стрелками, Если возможно реализовать эти две функции в пользовательской панели TableLayout, это может быть решением

3. Отредактируйте вопрос более точным способом. Обычно никому не интересно читать длинные тексты…