问题标签 [controlcollection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6261 浏览

asp.net - C# ControlCollection 扩展 GetAllTextboxes

我怎么能只得到 ControlCollection 中的 texboxes ?

我尝试:

但我收到以下错误:无法将“WhereEnumerableIterator`1[System.Web.UI.Control]”类型的对象转换为“System.Collections.Generic.IEnumerable`1[System.Web.UI.WebControls.TextBox]” '。

我使用带有 C# 的 Asp.Net 3.5

0 投票
5 回答
7134 浏览

c# - 枚举本质上不是 IEnumerable 的集合?

当您想要递归枚举分层对象,根据某些标准选择一些元素时,有许多技术示例,例如“展平”,然后使用 Linq 进行过滤:就像在此处找到的那样:

链接文本

但是,当您枚举诸如 Form 的 Controls 集合或 TreeView 的 Nodes 集合之类的东西时,我无法使用这些类型的技术,因为它们似乎需要一个 IEnumerable 参数(扩展方法) collection : 传入 SomeForm.Controls 不会编译。

我发现最有用的是:

链接文本

这确实为您提供了 Control.ControlCollection 的扩展方法,其结果为 IEnumerable,然后您可以将其与 Linq 一起使用。

我已经修改了上面的示例以毫无问题地解析 TreeView 的节点。

这是我现在使用扩展方法编写的那种代码:

而且我认为在传入约束的情况下,可能有一种更优雅的方式来做到这一点。

我想知道是否可以通用地定义这样的过程,以便:在运行时我可以将集合的类型以及实际集合传递给通用参数,因此代码与是否它是 TreeNodeCollection 或 Controls.Collection。

我也很想知道是否有任何其他方式(更便宜?更快?)而不是第二个链接(上面)中显示的方式来获取 Linq 可用的形式的 TreeNodeCollection 或 Control.ControlCollection。

Leppie 在链接到第一个(上图)的 SO 帖子中关于“SelectMany”的评论似乎是一个线索。

我对 SelectMany 的实验是:好吧,称它们为“灾难”。:)

感谢任何指针。我花了几个小时阅读我能找到的所有涉及这些领域的 SO 帖子,并漫无目的地进入“y-combinator”这样的异国情调。一个“谦卑”的经历,我可能会补充:)

0 投票
3 回答
1100 浏览

c# - Microsoft 是否会让所有集合都可供 LINQ 使用?

我使用 LINQ 已经有一段时间了(并且很享受它),但是当我遇到 .NET 专用集合(DataRowCollection、ControlCollection)时,感觉就像遇到了一个减速带。有没有办法将 LINQ 与这些专用控件一起使用,如果没有,您认为 Microsoft 会在框架的下一个版本中解决这个问题吗?还是让我们以非 LINQ 方式迭代这些项目,或者我们自己将项目从集合中拉出到支持 LINQ 的集合中?

0 投票
2 回答
3954 浏览

c# - 在 ASP.NET 自定义控件中呈现多个控件集合

我已经构建了一个自定义 WebControl,它具有以下结构:

该控件包含两个 ControlCollection 属性,“内容”和“页脚”。从未尝试构建具有多个控件集合的控件,但像这样解决了它(简化):

但是,它似乎可以正确呈现,如果我在属性内添加一些 asp.net 标签和输入控件(参见上面的 asp.net 代码),它就不再起作用了。我会得到 HttpException:

找不到与标签“KeywordLabel”关联的 ID 为“KeywordTextBox”的控件。

有点可以理解,因为标签出现在 controlcollection 中的文本框之前。但是,使用默认的 asp.net 控件它确实可以工作,那么为什么这不起作用呢?我究竟做错了什么?甚至可以在一个控件中有两个控件集合吗?我应该以不同的方式渲染它吗?

感谢您的回复。

0 投票
2 回答
2415 浏览

c# - 使用 C# 从 controlcollection 递归获取控件集合

目前我正在尝试从递归控件集合(中继器)中提取一组动态创建的控件(复选框和下拉列表)。这是我正在使用的代码。

我遇到以下行的问题:

我得到错误...

有任何想法吗?

0 投票
4 回答
2113 浏览

c# - 遍历多个 ControlCollections

我的 Windows 窗体中有一个选项卡控件,我想在两个不同的选项卡中迭代每个元素。打开文件时,我希望启用两者的所有元素,而当文件关闭时,所有元素都将被禁用。

但是,我不知道如何完成此操作,因为控件不在数组或列表中,而是在 ControlsCollection 中。前一秒我询问了 foreach 语句并了解了一些关于 lambda 的知识,但我不知道如何在这里应用它。

这是我所拥有的:

这是否可以通过一个 foreach 语句实现,或者更简单?

0 投票
0 回答
501 浏览

asp.net - ASP.NET 在设计时获取页面控件集合

在尝试使用 RenderControl 方法在设计时(在 UITypeEditor 中)从 Web.UI.Page 捕获 HTML 时,我注意到只有服务器控件正在呈现。

所以,给定这个 aspx 页面:

RenderControl 方法将渲染“label1”、“MyControl1”和“Button1”。表格中的头部和所有 div 都被忽略。

我决定在设计时查看页面的控制树,这就是我得到的:

这是它在运行时的样子:

有什么想法吗?

0 投票
1 回答
517 浏览

c# - ControlCollection.Item(s) 是如何工作的?

抱歉英语不好。

我需要通过代码创建和管理大量(不是“大”!)控件。我知道如何创建它们并链接事件。问题是未来访问附加控件的方式。

哪个属性更好?ControlCollection.Item[int index] 还是 ControlCollection.Item[string key]?

我认为Item[int]的时间复杂度一定是O(1),Item[string]的时间复杂度一定是O(n)。这样对吗?

0 投票
2 回答
7297 浏览

c# - 从控件集合访问时,runat="server" div 导致 System.Web.HttpException

我有一个 div 是 runat="server"。div 包含在面板中,并且 div 中包含一些控件。当我运行“ClearControlsInPanel()”方法时,div 之外(但在面板内)的所有控件都被清除,如下所示:

到达 div 后,我看不到其中的控件,因此这些控件都不会被清除。具有讽刺意味的是,我发现一个人发表了关于完全相同的事情的帖子,为什么将 runat=server 添加到 div 标记会在控件集合中引发类型为 'System.Web.HttpException 的异常? 但是线程结束了,没有真正的解决方案或解释。

完整的例外是:

请假设这必须保留为 runat 服务器 div,并且不能更改为面板。(我几乎可以肯定将其更改为面板会解决它,但我们还有其他要求需要将其作为 runat 服务器 div(长话短说))。

0 投票
1 回答
274 浏览

vb.net - 在运行时清空 ControlCollection

我在任何地方都找不到答案。我定义了一个表单控件集合的新实例,但在运行时,该集合为空。它适用于表单上的一个加载按钮,但不适用于另一个。代码完全相同,但一个有效,另一个无效。以下是相关代码:

此加载按钮未加载

这个是。

这是他们将信息传递到的地方。同样,对于 FLoad 按钮单击,FormControls 变量为空,但对于 CLoad 按钮单击则不是。任何帮助,将不胜感激。

编辑:对不起,这里是相关的公共属性