Я разрабатываю приложение на C # (Windows Forms), которое использует Mono для работы в Mac OS X.
Он содержит некоторые динамические элементы управления, например, настраиваемое групповое поле, содержащее некоторые метки и текстовые поля, кнопку и т. Д. Эти поля можно добавлять и удалять динамически.
Мой CustomGrpBx
наследуется от GroupBox
, и этот конструктор я использую:
public CustomGrpBx(Point CreateHere,Info Inf)
{
this.Name = Inf.Name;
this.Location = CreateHere;
CreateHere.Y = 10;
CreateHere.X = 10;
CreateHere.Y += 7;
Button btnPress = new Button();
btnPress.Location = CreateHere;
btnPress.Size = new Size(40, 24);
btnPress.Text = Name;
btnPress.Enabled = false;
this.Controls.Add(btnPress);
CreateHere.X += 45;
CreateHere.Y += 2;
TextBox txtName = new TextBox();
txtName.Location = CreateHere;
txtName.Size = new Size(75, 20);
txtName.Text = Name;
txtName.ReadOnly = true;
this.Controls.Add(txtName);
CreateHere.X += 80;
//More code here, but the same pattern as above
this.Size = new Size(CreateHere.X + 30, CreateHere.Y + 35);
}
Проблема возникает как при их создании, так и при удалении, или даже при отображении окна сообщения.
Случается так, что иногда при рендеринге появляются белые квадраты, или некоторые надписи отображаются неправильно. И иногда, когда появляется окно сообщения, оно сначала открывается, как 5 пустышек, которые просто пустые и которые нельзя закрыть.
Я что-то не так делаю, должен ли я немного спать в потоке GUI после каждого создания или я должен лишать законной силы вещи самостоятельно? Или мне стоит попробовать GTK #?
Большое спасибо за вклад в это.