У меня есть форма, которая программно добавляет в нее панель;Панель с автопрокруткой redraw
Для каждой задачи, входящей в мою программу, я добавляю ярлык и индикатор выполнения на панель с 30 пикселями Y, добавленными к предыдущей позиции Y.
Но когда панель иногда прокручивается, когда требуется прокрутить вниз, позиции умножаются и не находятся в их точном положении.
Помните, что я проверил и написал Y позицию на консоль и увидел, что Y положение нормально, но панель не показывает правильно
Я думаю, что проблема заключается в методе панели вытяжки, , но не знаю, как почини это.
Проблема в том, что задача 26 должна появиться сразу после 25, но не в правильном положении, несмотря на консоль, я видел, что позиция правильная.
код для добавления элементов управления:
private static void AddTaskControls(int taskId)
{
Label lbl = new Label();
lbl = new Label();
lbl.Name = "lbl" + taskId.ToString();
lbl.Text = "Task " + taskId.ToString() + ":";
lbl.Width = 57;
lbl.Height = 13;
lbl.Location = new Point(0, 25 + (taskId) * 30);
ProgressBar pr = new ProgressBar();
pr = new ProgressBar();
pr.Name = "pr" + taskId.ToString();
pr.Width = 180;
pr.Height = 23;
pr.Location = new Point(50, 20 + (taskId) * 30);
Label lbl2 = new Label();
lbl2.Name = "lbl" + taskId.ToString() + "List";
lbl2.Text = "Starting " + taskId.ToString() + "";
lbl2.Width = 200;
lbl2.Height = 13;
lbl2.Location = new Point(230, 25 + (taskId) * 30);
//Console.WriteLine(lbl2.Location.Y + "taskid:"+taskId);
if (panel1.InvokeRequired)
{
AddTaskControllsCallback t = new AddTaskControllsCallback(AddTaskControls);
panel1.BeginInvoke(t, new object[] { taskId });
}
else
{
panel1.Controls.Add(lbl);
panel1.Controls.Add(pr);
panel1.Controls.Add(lbl2);
pr.BringToFront();
}
}
@MickyD Я отредактировал мой вопрос и добавил коды –
@MickyD Нет, у меня нет никакого специального рисунка. просто контролирует, что вы видите на картинке выше. –
Итак, как мне решить проблему? –