У меня довольно странная проблема с пользовательским элементом управления C #. По сути, это панель, в которую вы можете добавлять ряды элементов управления нажатием кнопки.
Когда пользователь нажимает кнопку, новый набор элементов управления добавляется в виде строки. Код довольно прост, просто задайте свойства и добавьте их на панель следующим образом:
private void AddCommentControls()
{
_noOfComments++;
ComboBox tempCbCategory = new ComboBox();
TextBox tempTxtRoomNo = new TextBox();
ComboBox tempPositive = new ComboBox();
TextBox tempTxtComment = new TextBox();
tempCbCategory.Name = "cbCategory" + _noOfComments.ToString();
tempTxtRoomNo.Name = "txtRoomNo" + _noOfComments.ToString();
tempPositive.Name = "cbPositive" + _noOfComments.ToString();
tempTxtComment.Name = "txtComment" + _noOfComments.ToString();
tempCbCategory.Location = controls["cbCategory" + (_noOfComments - 1).ToString()].Location;
tempCbCategory.FormattingEnabled = true;
tempCbCategory.Size = new Size(119, 21);
tempCbCategory.Location = new Point(tempCbCategory.Location.X, (tempCbCategory.Location.Y + tempCbCategory.Height + 50));
controls.Add("cbCategory" + _noOfComments.ToString(), tempCbCategory);
pnlBg.Controls.Add(tempCbCategory);
tempTxtRoomNo.Location = controls["txtRoomNo" + (_noOfComments - 1).ToString()].Location;
tempTxtRoomNo.Size = new Size(68, 21);
tempTxtRoomNo.Location = new Point(tempTxtRoomNo.Location.X, (tempTxtRoomNo.Location.Y + tempTxtRoomNo.Height + 50));
controls.Add("txtRoomNo" + _noOfComments.ToString(), tempTxtRoomNo);
pnlBg.Controls.Add(tempTxtRoomNo);
tempPositive.Location = controls["cbPositive" + (_noOfComments - 1).ToString()].Location;
tempPositive.Size = new Size(46, 21);
tempPositive.FormattingEnabled = true;
tempPositive.Items.AddRange(new object[] {"Yes", "No"});
tempPositive.Text = "Yes";
tempPositive.Location = new Point(tempPositive.Location.X, (tempPositive.Location.Y + tempPositive.Height + 50));
controls.Add("cbPositive" + _noOfComments.ToString(), tempPositive);
pnlBg.Controls.Add(tempPositive);
tempTxtComment.Location = controls["txtComment" + (_noOfComments - 1).ToString()].Location;
tempTxtComment.Size = new Size(437, 57);
tempTxtComment.Location = new Point(tempTxtComment.Location.X, (tempTxtComment.Location.Y + tempTxtComment.Height + 50));
tempTxtComment.Multiline = true;
controls.Add("txtComment" + _noOfComments.ToString(), tempTxtComment);
pnlBg.Controls.Add(tempTxtComment);
}
Моя проблема возникает после добавления нескольких элементов управления, поля со списком (или текстовые поля, я не могу решить, какие именно), кажется, перемещаются вверх / вниз с постоянно увеличивающейся величиной с увеличением количества «строк», как показано здесь :

Я прошел через это довольно много раз и, должно быть, упустил что-то явно очевидное, но мне нужно разобраться, чтобы я мог двигаться дальше!
Любая помощь будет принята с благодарностью.
С уважением, Даниэль.
РЕДАКТИРОВАТЬ: Если кто-то заинтересован, это был результат после реализации принятого ответа:
