我正在C#(Windows窗體)中開發應用程序,該應用程序使用Mono在Mac OS X上運行。 它包含一些動態控件,例如包含一個自定義groupbox一些標籤和文本框,一個按鈕等。這些框都可以動態添加和刪除。在Mac OS X上使用C#Mono的隨機GUI錯誤
我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#?
非常感謝在此輸入。
非常標準的違反規則穿線的跡象。只在主UI線程中更新/顯示UI組件,請使用Control.Begin/Invoke()來封送調用。 – 2010-04-20 13:20:39
我正在使用背景工作器,但那個只能在另一個類的靜態工作,而不是直接使用gui對象。 – 2010-04-20 13:24:19