首页 > 解决方案 > 在 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;
    }
}

}

标签: c#winforms

解决方案


我的代码缺少对 base.OnValidating 的调用,这似乎是问题的原因。


推荐阅读