Я хотел бы отображать результат каждой строки объекта 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);
}
в итоге я хотел бы иметь две вещи:
- «Разрыв строки» для динамически добавляемых групповых полей, когда их общая ширина превышает ширину панели, и нет горизонтальной полосы прокрутки.
- Вертикальная полоса прокрутки, когда общая высота всех «строк» групповых полей превышает высоту панели.
Предоставленный код не предотвращает появление горизонтальной полосы прокрутки, и если строка j = j + 220 раскомментирована, появляются обе полосы прокрутки, но без разрыва строки.
Заранее спасибо за помощь.