C# 错误提供程序不适用于组框和选项卡控件中的文本框

2024-02-20

我正在尝试使用错误提供程序来实现,以在继续执行之前验证我的文本框不为空。

错误提供程序适用于主窗体上的文本框,但拒绝适用于组框或选项卡控件中的任何文本框或组合框。它不检查文本框,不显示错误或等待用户为正在检查的控件输入文本/选择项目。

当然,如果我松开组框或选项卡控件,错误检查会正常工作,但我也会失去按照我的预期为应用程序使用组框和选项卡控件的好处。

我使用下面的代码来检查文本框或组合框是否为空/空。

非常感谢一些帮助,这让我几乎想把我的电脑扔出窗外。

private void button3_Click(object sender, EventArgs e)
{
       //Validate the text box in the form before proceeding to store in Database
       // var emptyornull = Controls.OfType<TextBox>().Where(box => box.Name.StartsWith("_")).OrderBy(box => box.TabIndex);
       // var emptyornull2 = Controls.OfType<ComboBox>().Where(box => box.Name.StartsWith("_")).OrderBy(box => box.TabIndex);

        var boxes = Controls.OfType<TextBox>();

        foreach (var testControl in boxes)
        {
            if (string.IsNullOrEmpty(testControl.Text))
            {
                this.errorProvider1.SetError((Control)testControl, "error");
                return;
            }

            this.errorProvider1.SetError((Control)testControl, (string)null);
        }
}

这是因为您的代码不检查子控件,而只检查顶级控件。您需要递归地迭代表单的控件:

private IEnumerable<Control> GetAllControls(Control control)
{
    var controls = control.Controls.Cast<Control>();
    return controls.SelectMany(ctrl => GetAllControls(ctrl)).Concat(controls);
}

private void button1_Click(object sender, EventArgs e)
{
    errorProvider1.Clear();
    foreach (Control c in GetAllControls(this))
    {
        if (c is TextBox && string.IsNullOrEmpty(c.Text))
            errorProvider1.SetError(c, "Error");
    }
}

或者,Linq 方式:

errorProvider1.Clear();

GetAllControls(this).Where(c => c is TextBox && string.IsNullOrEmpty(c.Text))
    .ToList()
    .ForEach(c => errorProvider1.SetError(c, "Error"));

祝你好运。

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

C# 错误提供程序不适用于组框和选项卡控件中的文本框 的相关文章

  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • 为什么libc++的shared_ptr实现使用完整内存屏障而不是宽松内存屏障?

    在boost的实现中shared ptr 它用放松内存排序以增加其引用计数 https github com boostorg smart ptr blob master include boost smart ptr detail sp
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 以编程方式检查页面是否需要基于 web.config 设置进行身份验证

    我想知道是否有一种方法可以检查页面是否需要基于 web config 设置进行身份验证 基本上如果有这样的节点
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 当模板类不包含可用的成员函数时,如何在编译时验证模板参数?

    我有以下模板struct template
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public

随机推荐

  • 修剪或剪切使用 mediarecorder JS 录制的音频

    所需知识 如何 从前面 缩短音频 blob 数组并仍然具有可播放的音频 Goal 我最终尝试使用 JS 录制连续 45 秒的音频循环媒体记录器 https developer mozilla org en US docs Web API M
  • 使用 C# 枚举嵌套的 AD 用户组

    我编写了一些代码来获取组和嵌套组的所有用户 我还想确保如果组成员身份通过使第一个组成为最后一个组的成员而导致循环 则不会发生循环 我写的代码工作正常 但有点慢 这是我第一次尝试进行 AD 查找 有人可以看一下并告诉我代码看起来正常还是编码错
  • expo-video-player 出现问题,它抛出错误:setAudioModeAsync

    我的 expo video player 包有问题 我想通过 expo video player 显示视频 但是当我加载组件时它会抛出错误 我不知道如何解决它 所以我需要帮助 我尝试更改包源代码和组件道具 但它不起作用 这是代码 来自 ex
  • 使用 std::variant 强制使用通用接口,无需继承

    假设你有一些类似的课程Circle Image Polygon为此 您需要强制执行一个如下所示的通用接口 不是真正的代码 struct Interface virtual bool hitTest Point p 0 virtual Rec
  • Javascript正则表达式分割拒绝null

    是否可以让 JavaScript 正则表达式拒绝空匹配 是否可以告诉 String split 方法拒绝 null 值 console log abcccab split c result ab ab desired result ab a
  • ssh命令输出保存在shell脚本中的文本文件中

    我想编写shell脚本 其中我使用ssh命令 无论我通过 ssh 命令获得什么输出 我都想将其保存在文本文件或变量中 这样我就可以在我的 shell 脚本中使用它 目前我正在将输出保存在变量中 但是当我在 ssh 命令之外使用该变量时 值显
  • Google Maps API - 数组和 InfoWindows 的问题

    抱歉 如果这是微不足道的 但我是 JS 的新手 并且已经解决这个问题几个小时但无济于事 function initialize geocoder new google maps Geocoder var latlng new google
  • 无法为 BigDecimal 定义单例方法“encode_with”

    当尝试更新我的模型之一时 我遇到了异常can t define singleton method encode with for BigDecimal 我正在使用 Rails 3 0 7 和 Ruby 1 9 2 滑板场控制器 def up
  • 在 Perl 中打印 .00001 的解决方法

    我有这个程序 my d 40000 100 360 print At the equator n printf 9s 10 3f meters n 10 10 d for 0 7 它输出 At the equator By the way
  • C++ 已弃用从字符串常量到“char*”的转换

    我有一个私人课程char str 256 为此我有一个显式的构造函数 explicit myClass char func strcpy str func 我称其为 myClass obj example 当我编译这个时 我收到以下警告 已
  • (TableLayout)findViewById(空指针异常

    我整天都在寻找答案 但是当我尝试获取表格布局时 我得到的是空值 我发现信息表明它可能是另一个同名的表格布局 但只有一个 我的 xml 文件 my xml http filebin ca A1sZlhzeV0b 我的代码在这里layout6
  • 通用列表的动态排序标准

    这样做的目的是避免编写大量的 if 语句 这是我当前的代码 public override List
  • 如何在打开新对话框之前关闭所有 jquery ui 对话框?

    我想在打开新对话框之前关闭所有 jquery 对话框 我正在尝试使用以下代码 ui dialog content dialog close 它可以工作 但它也太接近新对话框了 请帮助我任何人 Try ui dialog content no
  • SQL 联合到 NHibernate 标准

    有没有办法将此 SQL 语句转换为 NHibernate Criteria select b1 FieldA as Name b1 FieldA as FullName from Sale b1 where b1 FieldA like j
  • 如何在 React Native 中将图标放入 TextInput 中?

    我正在考虑有这样的事情https android arsenal com details 1 3941 https android arsenal com details 1 3941其中有图标 按下该图标即可将密码显示为纯文本 而不是点
  • 将 Reactstrap 与 Next.js 结合使用

    我正在使用创建一个 React 应用程序Next js我正在尝试使用提供的组件reactstrap 我似乎遇到的问题似乎涉及导入名为的 CSS 文件bootstrap dist css bootstrap min css as the re
  • 如何在javascript中找到多元回归方程

    我搜索了堆栈溢出 但没有找到任何与我的问题真正相同的问题 因为没有一个问题真正具有多个自变量 基本上我有一组数据点 我希望能够找到这些数据点的回归方程 到目前为止 我的代码如下所示 w x z 是自变量 y 是因变量 var dataPoi
  • 将 cocos2d 视图添加到 UIView

    我已将 cocos2d 2 0 集成到现有的 iOS 项目中 并希望能够创建一个视图并将其作为子视图添加到现有视图中 cocos2d 设置代码应该放在哪里以及 cocos2d 视图如何在 UIView 中可见 我已关注雷 文德利希教程 ht
  • Excel 工作簿输入时出现奇怪的错误

    对于当前代码 String currentPath Directory GetCurrentDirectory OpenFileDialog op new OpenFileDialog op InitialDirectory current
  • C# 错误提供程序不适用于组框和选项卡控件中的文本框

    我正在尝试使用错误提供程序来实现 以在继续执行之前验证我的文本框不为空 错误提供程序适用于主窗体上的文本框 但拒绝适用于组框或选项卡控件中的任何文本框或组合框 它不检查文本框 不显示错误或等待用户为正在检查的控件输入文本 选择项目 当然 如