Курсор исчезает при использовании окна сообщения в OnValidating - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть собственное текстовое поле, для которого я выполняю проверку, переопределяя метод 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;
    }
}

}

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

В моем коде пропущен вызов к базе. При проверке, похоже, это является причиной проблемы.

0 голосов
/ 05 февраля 2019

Я могу получить поведение, которое, я думаю, вам нужно, установив позицию выбора следующим образом (сразу после e.Cancel = true;):

SelectionStart = this.TextLength;
SelectionLength = 0;

Возможно, вы также захотите изменить эти значения (чтобы выбрать все полепосле сбоя валидации)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...