通用所有控制方法

2023-11-25

无法想到更好的标题,所以抱歉。

我正在尝试转换这个方法,它将检索表单的所有子控件,作为扩展方法并接受接口作为输入。到目前为止我已经达到了

public IEnumerable<Control> GetAll<T>(this Control control) where T : class
{
    var controls = control.Controls.Cast<Control>();

    return controls.SelectMany(ctrl => GetAll<T>(ctrl))
                                .Concat(controls)
                                .Where(c => c is T);
}

效果很好,除了我需要添加OfType<T>()当调用它来访问它的属性时。

例如(this == 形式)

this.GetAll<IMyInterface>().OfType<IMyInterface>()

我正在努力将返回类型变成通用返回类型IEnumerable<T>,这样我就不必包括OfType它只会返回相同的结果,但转换正确。

有人有什么建议吗?

(将返回类型更改为IEnumerable<T>导致Concat

实例参数:无法从“System.Collections.Generic.IEnumerable”转换<T>' 到 'System.Linq.ParallelQuery<System.Windows.Forms.Control>'


问题是Concat想要一个IEnumerable<T>以及 - 不是IEnumerable<Control>。但这应该有效:

public static IEnumerable<T> GetAll<T>(this Control control) where T : class
{
    var controls = control.Controls.Cast<Control>();

    return controls.SelectMany(ctrl => GetAll<T>(ctrl))
                                .Concat(controls.OfType<T>()));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通用所有控制方法 的相关文章

  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 为什么在 ScrollViewer 内部单击时我的 TextBox 会获得焦点?

    在我的 Windows 应用商店应用程序中 我创建了一个 ScrollViewer 里面有一个网格 里面有一些文本框 每当用户单击 ScrollViewer 中的任意位置时 第一个 TextBox 就会获得焦点 我不知道为什么会发生这种情况
  • 使用 TensorFlow 对图像中的点进行插值采样

    给定的是灰度图像I作为 2D 张量 维度 W H 和坐标张量C 暗淡 无 2 我想解释的行C作为坐标I 样本I在这些坐标上使用某种插值 双线性可能适合我的用例 并将结果值存储在新的张量中P 维度为无 即一维 条目数量为C有行 使用 Tens
  • Python 字典的底层哈希数据结构

    我正在构建一个非常大的字典 并且正在执行许多检查以查看键是否在结构中 然后添加它是否唯一或如果相同则增加计数器 Python 使用一个哈希数据结构存储字典 不要与加密哈希函数混淆 查找的时间复杂度为 O 1 但如果哈希表已满 则必须重新哈希
  • 如何在 Angular js 智能表中编辑内容

    我对java脚本很陌生 所以如果这看起来很基础 我必须道歉 如何使用 Angularjs 编辑 Smart Table 中的行表 似乎没有关于新智能表的教程 我想创建一个简单的表单 供用户输入特定地点的开放时间 我创建了可以在表上添加和删除
  • 线程“main”中出现异常 java.lang.UnsatisfiedLinkError:java.library.path 中没有 lwjgl

    我正在构建基本的 Slick 游戏示例 解释如下 http slick cokeandcode com wiki doku php id 01 a basic slick game 我遇到了一些问题 具体来说 游戏编译得很好 但当我尝试运行
  • 获取从本机 dll 到 C# 应用程序的结构数组

    我有一个 C NET 2 0 CF 项目 需要在本机 C DLL 中调用方法 此本机方法返回类型的数组TableEntry 当调用本机方法时 我不知道数组有多大 如何将表从本机 DLL 获取到 C 项目 下面是我现在所拥有的 in C NE
  • 找到用死 Groovy 代码填充 PermGen 的代码

    We have had our glassfish instance go down every two weeks for a while with a java lang OutOfMemoryError PermGen space I
  • Pyparsing - 令牌的顺序不可预测

    我希望能够从一段文本中提取字母的类型和数量 其中字母可以按任何顺序排列 我正在进行其他一些解析 但这一点让我难住了 input gt result abc gt a 1 b 1 c 1 bbbc gt b 3 c 1 cccaa gt a
  • 绕过 vba 函数中的最大字符串大小?

    vba 函数的字符串中可以使用的最大字符数为 255 我正在尝试运行这个函数 Var1 1 Var2 2 Var256 256 RunMacros Tims pet Robot Var1 Var2 Var256 Runat TimeValu
  • ASP.NET HttpApplication 生命周期

    Global asax cs 扩展的 HttpApplication 类是否在应用程序的生命周期中存在 什么时候可以创建 销毁实例 我遇到 application start 触发两次 这似乎与应用程序池回收和在此过程中发出请求有关 我还没
  • 如何使用 PHP 从日期中查找星期几的日期?

    如果我有一个 date YYYY mm dd并想要得到一个具体的 day 由 0 周日 至 6 周六 指定 YYYY mm dd is in 例如 如果我得到2012 10 11 as date and 5 as day 我想得到2012
  • 在纯 Perl 中从另一个 HTTP 资源进行流传输的最简单方法是什么?

    在 Perl 中从另一个 HTTP 资源进行流式传输的最简单方法 无需打开 shell 进行卷曲并从标准输入读取 是什么 我在这里假设我正在读取的 HTTP 资源是一个潜在的无限流 或者只是非常非常长 好的旧 LWP 允许您将结果作为流进行
  • graphviz - 固定节点位置

    我有一个由 neato 处理的图表 我正在向它添加新的边 但是 我不希望旧节点被移动 我希望 neato 计算新节点的新位置 并将旧节点保留在同一位置 strict graph node0 pos 1 2 node1 pos 2 3 我添加
  • 将方法参数传递给函数

    我很好奇这在 Go 中是否可行 我有一个具有多种方法的类型 是否可以有一个函数接受方法参数 然后为类型调用它 这是我想要的一个小例子 package main import fmt type Foo int func f Foo A fmt
  • Guice 和 Scala - 泛型依赖注入

    我正在尝试使用 Guice 创建通用特征的绑定 看看如何trait被定义为 trait Repository T See the trait执行 class DomainRepository extends Repository Domai
  • ES6 - 使用 getter 导出模块

    想要导出一个模块 该模块从某个全局对象中获取模块的定义 它是这样的 export get DynamicModule return globalFluxStorage state property property property pro
  • 如何在pytest中测试类的继承方法

    house py class House def is habitable self return True def is on the ground self return True conftest py import pytest f
  • 通过地址/指针访问对象

    我可以通过内存地址或指针访问当前 R 会话中创建的 data table 对象吗 library data table DT lt data table a 1 10 b letters 1 10 address DT 1 0x6bf9b9
  • PDO::ERRMODE_EXCEPTION 不会抑制警告

    http php net manual en pdo error handling php PDO ERRMODE WARNING 除了设置错误代码之外 PDO 还会发出传统的 E WARNING 消息 如果您只想在不中断应用程序流程的情况
  • 通用所有控制方法

    无法想到更好的标题 所以抱歉 我正在尝试转换这个方法 它将检索表单的所有子控件 作为扩展方法并接受接口作为输入 到目前为止我已经达到了 public IEnumerable