c# - 在 OnValidating 中使用 Messagebox 时光标消失
问题描述
我有一个自定义文本框,我正在通过覆盖该OnValidating
方法进行验证。作为验证的一部分,我使用消息框向用户提供反馈。
消息框显示后,我设置e.Cancel = true
. 这有效,但文本框不再有光标。它具有焦点,如果您在控件中键入,它仍然可以工作,但光标永远不会显示。即使您单击文本框,光标也不再显示。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public class txtExample:TextBox
{
protected override void OnValidating(CancelEventArgs e)
{
if (SomeValidationCode() == false)
{
MessageBox.Show("Validatioon Failed");
e.Cancel = true;
return;
}
base.OnValidating(e);
}
private bool SomeValidationCode()
{
return false;
}
}
}
解决方案
我的代码缺少对 base.OnValidating 的调用,这似乎是问题的原因。
推荐阅读
- google-apps-script - 如何获得 SpreadsheetApp.openById 的正确权限
- javascript - JEST:通过innerHTML选择一个HTML元素
- java - 调试器跳过递归 Java 程序中的方法
- visual-studio - 如何删除隐藏的连接字符串
- python-3.x - 如何根据最高数字对同时具有数字和字母的字符串列表进行排序
- javascript - 如何将文本元素定位到特定位置并在 SVG 中调整大小?
- php - 在逻辑操作中替换 eval() php
- r - PowerPoint幻灯片人员中图像和表格的自动定位
- ios - Crashlytics iOS 应用程序的多个环境和组织?
- wix - 使用 wixlib 中“包含”的文件