Добавление вертикальной полосы прокрутки и «разрыва строки» на панели в зависимости от размеров ее элементов - PullRequest
0 голосов
/ 24 сентября 2018

Я хотел бы отобразить результат каждой строки объекта SqlDataReader в виде нескольких динамических групповых ящиков, привязанных к существующей панели.

Я также хочу автоматический разрыв строки, когда один из этих групповых блоков вызываетгоризонтальное переполнение в содержащей панели, вместо того, чтобы продолжать добавляться один за другим слева направо.

Таким образом, когда групповой блок выходит за горизонтальные границы панели, он помещается на новую «линию»вместо этого, под предыдущими групповыми полями.

Вот мой код:

SqlCommand cmd = new SqlCommand(sqlString, cnx); //return;
SqlDataReader myReader;
myReader = cmd.ExecuteReader(); 
int i = 0; int j = 0;
int sw = Screen.PrimaryScreen.Bounds.Width;//sw=1920
int sh = Screen.PrimaryScreen.Bounds.Height;//sh=1080

panel1.HorizontalScroll.Maximum = 0;
panel1.AutoScroll = false;
panel1.VerticalScroll.Visible = false;
panel1.AutoScroll = true;

while (myReader.Read())
{
    MessageBox.Show("Results : \n Distinct values : " + myReader["column1"].ToString() + " Occurence number  : " + myReader["nbre_column1"].ToString());                        
    //I can show all values including on myReader on this message box

    GroupBox resultGroupBox = new GroupBox();
    resultGroupBox.Size = new System.Drawing.Size((sw * 20) / 100, (sh * 20) / 100);
    resultGroupBox.Location = new Point(44 + i, 36);
    i = i + 390;
    //j = j + 220;
    panel1.Controls.Add(resultGroupBox);
}

В итоге я хотел бы иметь две вещи:

  1. A "разрыв строки"для динамически добавляемых групповых блоков, когда их объединенная ширина превышает ширину панели, а горизонтальная полоса прокрутки отсутствует
  2. Вертикальная полоса прокрутки, когда общая высота всех" линий "групповых блоков превышает высоту панели.

Приведенный код не препятствует появлению горизонтальной полосы прокрутки, и если строка j = j + 220 не используетсяТед, обе полосы прокрутки появляются, но без разрыва строки.

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 24 сентября 2018

Используйте FlowLayoutPanel вместо Панели и установите ее свойства следующим образом (если они еще не установлены):

  • Автопрокрутка: Правда ;при необходимости добавляет вертикальную полосу прокрутки
  • WrapsContent: True ;позволяет оборачивать содержимое по мере необходимости
...