【问题标题】:C# How to reload a form with dynamically created itemsC#如何使用动态创建的项目重新加载表单
【发布时间】:2017-06-28 14:47:30
【问题描述】:

Image of program

我的主窗体为列表中的每个条目动态创建列表框。通过单击右上角的按钮,我得到一个小表单来创建一个新条目。如果我关闭表单,应该创建一个新的文本框,但是我不能只调用创建列表框的方法,因为它会绘制重复项。有没有办法刷新整个表单而不关闭它并创建一个新表单?

文本框代码

foreach (Uitslag u in geselecteerdeVerkiezing.uitslagen)
{
    CreateDynamicTextBox(x, y, u);
    UpdatePositionManager(ref x, ref y, ref PositionManager);
}

private void CreateDynamicTextBox(int x, int y, Uitslag u)
{
    TextBox textBox = new TextBox();
    textBox.Location = new Point(x, y);
    textBox.Size = new Size(220, 100);
    textBox.Multiline = true;
    textBox.ReadOnly = true;
    textBox.Text = ("Verkiezing: " + geselecteerdeVerkiezing.Naam + Environment.NewLine + "Uitslag: " + u.Naam + Environment.NewLine + "Aantal zetels: " + +geselecteerdeVerkiezing.AantalZetels + Environment.NewLine + "Zetels voor meerderheid: " + geselecteerdeVerkiezing.Meerderheid + Environment.NewLine + "Aantal deelnemende partijen: " + u.DeelnemendePartijen.Count);
    textBox.Name = u.Naam;

    textBox.MouseClick += new MouseEventHandler(textBox_Click);
    this.Controls.Add(textBox);
}

【问题讨论】:

  • 那么...删除您的意思是现有的控件?
  • @EpicKip 也这么认为,但很难得到它
  • 看起来您正在创建文本框,而不是列表框。
  • 我可以删除所有现有的文本框控件吗?这是我第一次使用动态创建的对象
  • @TomLimpens 如果英语对你来说很难,你可以用荷兰语发表评论,我可以阅读/翻译。

标签: c# winforms visual-studio


【解决方案1】:

如果您想删除所有文本框,我认为您可以这样做(没有时间测试):

var textBoxes = this.Controls.Cast<Control>().Where(r => r is TextBox).ToArray();
foreach (var textBox in textBoxes)
{
    textBox.Dispose();
}

您还可以在.Where()ForEach 本身中按名称检查它们。

【讨论】:

  • 这不会释放控件。
  • @LarsTech 谢谢忘了 ;)
  • 您必须在 textBoxes 声明的末尾添加 .ToArray(),因为您无法在 for-each 期间修改枚举。目前,您的代码不会删除列表中的 all 控件。您还可以删除 Controls.Remove(textBox) 行,因为 Dispose 会为您执行此操作。
  • 我认为这会起作用,但我在测试时发现了一个更深层次的问题。我正在使用此表单提供一个对象,其中包含创建文本框的对象列表,因此我需要先更新该列表,然后才能更新我的表单。谢谢,尽管它似乎适用于列表中的现有对象。
  • @TomLimpens 如果这解决了问题中提出的问题,请接受,以便其他人可以使用它
猜你喜欢
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2015-02-22
相关资源
最近更新 更多