void AddSignElement(SignContentType e) { SignElementUI se = new SignElementUI(); se.ContentType = e; se.Content = SignContentFactory.Create(e); try { se.ContentControl = SignContentFactory.CreateControl(e); se.ContentControl.BindToContent(se.Content); se.ContentControl.ContentChange += ContentControl_ContentChange; } catch { se.ContentControl = null; // If there are errors, don't use the UI. (allow controls without UI) } ISignContent[] newElements; lock (Elements) { Elements.Add(se); listBox1.Items.Add(se.Content.Summary); newElements = Elements.Select(i => i.Content).ToArray(); } Animate.SetContent(newElements); }