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