以编程方式删除C#中文本框的最简单方法?

以编程方式删除C#中文本框的最简单方法?,c#,winforms,C#,Winforms,我有一本用于我的程序的文本框字典。更改选项时,我希望删除框,以便为下一页创建新框 public static bool command0 () { foreach (TextBox tBox in Globals.inputBoxes) tBox = null; return true; } 返回此错误 Cannot convert type 'System.Collections.Generic.KeyValuePair

我有一本用于我的程序的文本框字典。更改选项时,我希望删除框,以便为下一页创建新框

    public static bool command0 () {
        foreach (TextBox tBox in Globals.inputBoxes)
            tBox = null;
        return true;
    }
返回此错误

Cannot convert type 'System.Collections.Generic.KeyValuePair<string,System.Windows.Forms.TextBox>' to 'System.Windows.Forms.TextBox' (CS0030) - C:\Users\e309706\Documents\SharpDevelop Projects\simulator 3\simulator 3\Globals.cs:73,4
无法将类型“System.Collections.Generic.KeyValuePair”转换为“System.Windows.Forms.TextBox”(CS0030)-C:\Users\e309706\Documents\SharpDevelop Projects\simulator 3\simulator 3\Globals.cs:73,4

有没有一种简单而正确的方法来完成我想做的事情?

您的
全局输入。InputBox
是一个字典,因此它们会在键值对上迭代。将您的代码调整为:

// This kvp variable is what your exception is saying was wrong.
foreach (KeyValuePair<string, TextBox> kvp in Globals.inputBoxes)
{
    Textbox txt = kvp.Value;
    // Do what you need to with the txt object now
}

关于这个附加方法的一点是,很多时候,您可能还希望在循环中使用字典中的键。仅迭代这些值将不允许您在不再次访问字典的情况下访问该值。

。。。或者枚举
属性。或者“foreach(Globals.inputboxs.Values中的TextBox TextBox)”同样,OP可能希望使用
清除
,因为没有
删除
方法。或者他想把它们从表格中删除,但是我们没有足够的信息。谢谢,@TimSchmelter。那
Delete
只是一个可以调用的“虚拟”方法。我更新删除了一个不存在的方法。旁注:“我要做的事情的正确方法”可能不包括任何类型的“全局”或删除文本框。。。但是,由于您并没有实际说出您要做的事情,您将得到语法错误的字面解决方案。我的答案是解决您收到的异常。实际上,从表单中删除它们应该更容易,因为现在您可以实际访问文本框了。如果你仍然不明白,那就成了另一个问题。我没有意识到我有语法错误,所以文字更正是有用的。你认为我还应该提供什么信息?我想我很清楚,我想删除我字典中的所有文本框。globals这个名称可能有误导性,globals只是一个静态类,在一个名称空间下有公共数据,这是我不应该做的吗?如果你想删除字典中的所有文本框,你可能想使用dictionary.Clear()
foreach (TextBox txtin Globals.inputBoxes.Values)
{
    // Do what you need to with the txt object now
}