如何动态清除用户控件中的所有控件?

2024-02-22

是否可以动态(并且一般地)清除用户控件的所有子控件的状态? (例如,所有的 TextBox、DropDrownList、RadioButton、DataGrid、Repeater 等——基本上任何具有 ViewState 的东西)

我试图避免做这样的事情:

foreach (Control c in myUserControl.Controls)
{
    if (c is TextBox)
    {
        TextBox tb = (TextBox)c;
        tb.Text = "";
    }
    else if (c is DropDownList)
    {
        DropDownList ddl = (DropDownList)c;
        ddl.SelectedIndex = -1;
    }
    else if (c is DataGrid)
    {
        DataGrid dg = (DataGrid)c;
        dg.Controls.Clear();
    }

    // etc.

}

我正在寻找这样的东西:

foreach (Control c in myUserControl.Controls)
    c.Clear();

...但显然这不存在。有没有什么简单的方法可以动态/通用地完成此任务?


我打算建议一个类似于 Task 的解决方案,除了(正如 Sixlettervariables 指出的那样)我们需要将其实现为 1 个扩展方法,并本质上打开传入的控件的精确类型(即复制您在问题中发布的逻辑) 。

public static class ControlExtensions
{
    public static void Clear( this Control c )
    {
        if(c == null) {
            throw new ArgumentNullException("c");
        }
        if (c is TextBox)
        {
            TextBox tb = (TextBox)c;
            tb.Text = "";
        }
        else if (c is DropDownList)
        {
            DropDownList ddl = (DropDownList)c;
            ddl.SelectedIndex = -1;
        }
        else if (c is DataGrid)
        {
            DataGrid dg = (DataGrid)c;
            dg.Controls.Clear();
        }
        // etc....
    }
}

这不是特别优雅的方法,但页面/控件中的代码现在更加简洁

foreach (Control c in myUserControl.Controls) {
    c.Clear();
}

当然你现在可以打电话control.Clear()代码中的其他任何地方。

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

如何动态清除用户控件中的所有控件? 的相关文章

  • 如何将 webmethod 与 telerik 批量编辑网格一起使用

    Work on Asp net vs2012 C telerik RadGrid batch edit I put save button outside from the grid Under the save button want t
  • 添加到 .NET 任务栏中的右键单击应用程序菜单

    大多数应用程序只有 恢复 移动 调整大小 最小化 最大化和关闭 但是MS SQL提供了额外的选项 帮助 自定义视图 按照这些思路 是否可以添加到任务栏中应用程序的右键单击菜单 注 我是not指通知区域中时钟旁边的图标 这是一个更简单的ans
  • 带有嵌入 Flash 视频的 PDF 示例?

    有谁知道我在哪里可以查看嵌入 Flash 视频的 PDF 示例 我知道问这个问题很愚蠢 因为你会认为任何面向技术的用户都应该能够使用谷歌找到一个 但我真的找不到 我的另一个问题是 使用 C 中的 API 将 Flash 视频嵌入 PDF 文
  • 多选DataGridView没有CTRL键没有闪烁?

    我在表单 Form1 vb 上有一个 DataGridView 控件 需要允许用户在不使用 CTRL 键的情况下多选行 没有可用的键盘 他们使用触摸屏 我已启用 mutliselect 属性 并在 Form 类中包含以下代码 我的 Data
  • Membership.ValidateUser() 的目的是什么

    我一直在学习有关MembershipProvider类 我认为Membership ValidateUser 方法应该用于登录用户 然而我刚刚了解到有一个FormsAuthentication Authenticate 目的是什么Valid
  • DbContext.SaveChangesAsync 异常处理

    当搭建新的脚手架时ApiController通过 Visual Studio 2013 中的异步操作和实体框架支持 某些方法可以包装DbContext SaveChangesAsync https msdn microsoft com en
  • 回发后保持网格视图中 div 的滚动条位置

    我在 web config 中使用了以下代码 以便在服务器回发后保持滚动条位置
  • ASP.NET 成员资格 HashAlgorithmType 默认为 HMACSHA256,那么密码是哈希键控的吗?

    我有一个 ASP NET 4 5 Web 应用程序 它使用SqlMembershipProvider 在开发过程中 有人把passwordFormat Clear 在配置中导致密码以明文形式保存 我想删除它并启用密码散列 但我想确保散列不是
  • 如何在 Visual Studio 中调试时强制异常?

    我正在调试模式下运行我的应用程序 并且我想手动抛出异常 即不是从代码内部抛出异常 有什么办法可以做到这一点吗 当然 跑步throw new Exception My forced exception 在命令或立即窗口中不起作用 编辑 我希望
  • 该进程无法访问该文件,因为该文件正在被另一个进程使用

    当我从 bat 文件启动 net 控制台应用程序时 例如start myapp exe 然后 myapp exe 尝试将文件写入其当前目录 尽管我收到 net 运行时错误 声称该文件正在被另一个应用程序使用 没有其他应用程序在运行 http
  • 使用 TFS API 在单个查询中检索工作项及其链接的工作项

    有谁知道是否可以检索工作项目及其列表链接的工作项使用 TFS API Web 服务从 TFS 进行一趟 目前 我们必须对第一次调用期间进行的每个工作项进行第二次调用 并且引入了性能问题 如果这不可能 是否有办法查看链接工作项的类型而不检索它
  • DateTime.Ticks 没有 100 ns 的分辨率? [复制]

    这个问题在这里已经有答案了 可能的重复 C DateTime Now 精度 https stackoverflow com questions 2143140 c sharp datetime now precision SO 有一些关于
  • 将参数传递给模板类型的 C# 泛型 new()

    添加到列表时 我试图通过其构造函数创建一个 T 类型的新对象 我收到编译错误 错误消息是 T 创建变量实例时无法提供参数 但我的类确实有一个构造函数参数 我怎样才能做到这一点 public static string GetAllItems
  • 160 位 SHA1 哈希值的前 32 位是否可以替代 CRC32 哈希值?

    我正在开发一个 NET 3 5 项目 我需要一个 32 位哈希值 NET 加密类中似乎没有任何方法返回 32 位哈希 MD5 是 128 位 SHA1 是 160 位等 我实现了一个 CRC32 类 但我发现现有的 SHA1 和 MD5 哈
  • ASP.NET Web Api 的事件发布者

    我已经开始使用微服务 我需要创建一个事件发布机制 我计划使用 Amazon SQS 这个想法很简单 我将事件存储在与聚合相同的事务中的数据库中 如果用户更改他的电子邮件 事件UserChangedEmail将被存储在数据库中 我还有事件处理
  • ASP.NET MVC 防伪造令牌不安全

    在没有 ssl 的情况下向服务器发出请求时 我实际上可以看到 MVC3 框架以纯文本形式生成的验证令牌密钥 该密钥存储在名为 RequestVerificationToken Lw 的 cookie 中 在混合安全环境中 实际上可以在向非
  • *.tlb 文件在运行时使用过吗?

    我正在开发一个通过 COM 互操作公开一些 NET API 的产品 作为构建的一部分 我们为所有此类程序集生成 tlb 文件 并将它们作为单独 SDK 包的一部分提供 我们的客户可以在我们的产品之上安装 SDK 并创建使用我们的 COM A
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • asp.net cookie、身份验证和会话超时

    我有一个使用表单身份验证的 asp net 网站 我在会话中保留一些信息 例如用户名 用户 ID 电子邮件等 我通过在身份验证 cookie 上设置较长的到期日期来允许用户保持登录网站的状态 因此 当用户仍处于身份验证状态时 会话过期的情况
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里

随机推荐

  • 编译元素导致输入插入符位置移动到末尾

    我的指令有问题 该指令的目的是轻松添加验证 而无需手动将 ng class 除其他外 添加到元素中以便显示错误状态 我只是想在我的元素上放置一个 验证 指令 并在出现错误状态时生成适当的类 和错误消息 就验证而言 它运行良好 但会产生奇怪的
  • 自定义路由类

    在 symfony 1 4 中 您可以定义自定义路由类 在其中使用自定义逻辑覆盖 url 的生成 例如 custom class sfDoctrineRouteCollection options model Custom prefix p
  • 如何在jquery中选择一个元素及其子元素? [复制]

    这个问题在这里已经有答案了 我有一个 div 其中包含更多 div 这些 div 内部包含 table div 我怎样才能在jquery中选择这个父div及其子div 父 div 有类 AccordionTitle AccordionTit
  • 当我尝试使用 Rakudo 运行脚本时,为什么会出现“被零除”错误?

    我刚刚构建了 Rakudo 和 Parrot 这样我就可以使用它并开始学习 Perl 6 我下载了 Perl 6 书 并愉快地输入了第一个演示程序 网球锦标赛示例 当我尝试运行该程序时 出现错误 Divide by zero current
  • 即使活动发生变化,如何保持 Android 客户端与服务器的连接并向服务器发送数据?

    我最初在我的活动中实现了一个异步任务 将数据发送到服务器 但是当我改变活动时 连接就丢失了 为了避免这种情况 我的方法是实现一个集中网络操作并将数据发送到服务器的服务 该服务的代码如下 import java io BufferedWrit
  • Rxjs 将 Json 文档中的数组映射到新的数组类型

    我正在 Angular 服务中从 PouchDB 检索文档 该文档以以下格式检索 id segments rev 1 4f0ed65cde23fe724db13bea1ae3bb13 segments name Aerospace name
  • 并发 Sql Server 连接数

    我正在创建一个带有 Sql Server 数据库引擎的 net 应用程序 我希望每秒有数千名用户访问我的网站 连接数靠什么 IIS 和 Sql Server 可以容纳多少个连接 首先 连接和连接池之间存在区别 研究一下这一点是不是很好 因为
  • RabbitMQ 用户在预先创建的队列上发布/订阅的权限

    我有一个用例 我需要创建一个用户并授予他仅在现有队列上发布 订阅的权限 这是一个示例 虚拟主机 mainvhost 对于所有用户都相同 在虚拟主机内 我有 A foo 和 Q bar 队列 用户 foo 只能发布 订阅到 Q foo 用户
  • 如何断言不为空?

    我对 javascript 测试非常陌生 我想知道如何在中断言 not nullMocha框架 Mocha 支持您想要的任何断言库 您可以在此处查看它如何处理断言 http mochajs org assertions http mocha
  • Primefaces 仅更新选定的选项卡

    我有一种情况 当触发 选择 事件时 我想更新页面上的多个组件 However 其中两个位置位于 tabView 内 我只想更新这些组件 如果它们位于当前选定的选项卡内 我suspect我正在寻找的是这样的东西
  • 与“开始调试”相比,“附加到进程”有什么优势?

    我是编程新手 我知道之前只开始调试 也许启动调试套件以更好地开发一些小型应用程序 我发现 Visual Studio IDE 提供了另一种附加到进程的方法供使用 何时以及为何必须使用附加调试 比如多线程应用程序的调试 客户端 服务应用程序调
  • 如何读取大型 Sqlite 文件并从资产文件夹复制到 Android 模拟器或设备中?

    我想很多人已经读过这篇文章 在 Android 应用程序中使用您自己的 SQLite 数据库 http www reigndesign com blog using your own sqlite database in android a
  • ASP.Net 动态数据还是 MVC2?

    我一直在使用 Web 表单 并且我想根据一些事实和我在其中看到的其他优点切换到 MVC 模式 当我遇到最新的动态数据 过去称为动态数据模板 时 我对 MVC 审查进展顺利 如果我错了 请纠正我 但我相信在后端 MVC2 和 DD 都使用 M
  • 在其他桌面、Python、Windows 上启动进程

    我创建了第二个桌面 import win32api win32con win32gui win32service win32process import pywintypes import traceback thread time cSt
  • CloudKit - 具有依赖项的 CKQueryOperation

    我刚刚开始使用 CloudKit 所以请耐心等待 背景信息 苹果在 WWDC 2015 上发表了有关 CloudKit 的演讲https developer apple com videos wwdc 2015 id 715 https d
  • 如何审计Spring data jpa @Query?

    为了审核记录所有数据库更改 我们实现了 HibernateInterceptor org hibernate Interceptor 我们可以记录使用 JpaRepository 执行的查询的审核 我们使用的拦截器 示例 import ja
  • 如何获取特定子字符串后面的字符串?

    如何获取特定子字符串之后的字符串 例如 我想获取之后的字符串 world in my string hello python world I m a beginner 在本例中是 I m a beginner 最简单的方法可能就是分割你的目
  • :(冒号)GNU Bash 内置函数的用途是什么?

    一个不执行任何操作的命令的目的是什么 它只不过是一个注释领导者 但实际上它本身就是一个内置的 shell 它比每次调用在脚本中插入注释要慢大约 40 这可能会根据注释的大小而有很大差异 我能看到的唯一可能的原因是 poor man s de
  • 使用来自原始 PCM 16000 采样率流的 CMSampleTimingInfo、CMSampleBuffer 和 AudioBufferList

    我从外部接收音频数据和大小 音频似乎是线性 PCM 符号为 int16 但是当使用资产写入器录制此音频时 它会保存到高度失真和更高音调的音频文件中 define kSamplingRate 16000 define kNumberChann
  • 如何动态清除用户控件中的所有控件?

    是否可以动态 并且一般地 清除用户控件的所有子控件的状态 例如 所有的 TextBox DropDrownList RadioButton DataGrid Repeater 等 基本上任何具有 ViewState 的东西 我试图避免做这样