Winforms MenuStrip подчеркнутая буква горячей клавиши

Вы можете условно добавить в свою схему проверки, как и любой другой объект:

let validationShape = {
  company: Yup.object().shape({
    name: Yup.string().required('Field is required'),
    address: Yup.string().required('Field is required'),
    email: Yup.string()
      .email('Wrong e-mail format')
      .required('Field is required')
  })
};

if (this.state.isPerson) {
  validationShape.person = Yup.object().shape({
    name: Yup.string().required('Field is required'),
    surname: Yup.string().required('Field is required'),
    middleName: Yup.string().required('Field is required'),
    email: Yup.string()
      .email('Wrong e-mail format')
      .required('Field is required');
}

const validationSchema = Yup.object().shape(validationShape);
6
задан Jeff 6 May 2009 в 15:58
поделиться

3 ответа

В Windows есть настройка показывать подчеркивание или нет. Чтобы изменить настройку,

  1. Щелкните правой кнопкой мыши по рабочему столу.
  2. Выберите «Свойства»
  3. Нажмите на вкладку «Внешний вид»
  4. Нажмите кнопку «Эффекты»
  5. Снимите флажок «Скрыть подчеркнутые буквы» для навигации по клавиатуре "
9
ответ дан 8 December 2019 в 03:01
поделиться

Они будут отображаться только во время выполнения, когда пользователь нажимает клавишу Alt. Когда вы нажимаете клавишу Alt, форма думает, что вы, возможно, захотите использовать один из ярлыков, поэтому он отображает любое подчеркивание.

8
ответ дан 8 December 2019 в 03:01
поделиться

Вы можете заставить пользователя видеть подчеркивание, создав настраиваемое средство визуализации ToolStrip. Мне потребовалось довольно много времени, чтобы понять, как обойти ответ Криса. Вот созданный мной рендерер:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace YourNameSpace
{
    class CustomMenuStripRenderer : ToolStripProfessionalRenderer
    {
        public CustomMenuStripRenderer() : base() { }
        public CustomMenuStripRenderer(ProfessionalColorTable table) : base(table) { }

        protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
        {
            e.TextFormat &= ~TextFormatFlags.HidePrefix;
            base.OnRenderItemText(e);
        }
    }
}

А затем в форме с MenuStrip в конструкторе вы устанавливаете рендерер:

public YourFormConstructor()
{
    InitializeComponents();
    menuStripName.Renderer = new CustomMenuStripRenderer();
}

Я хотел бы отметить, что если вы предпочитаете рендеринг в системном стиле, вы можете расширить ToolStripSystemRenderer class вместо Professional, но мне нравится настраивать цветовую таблицу. Это исправление, которое не требует от клиента изменения настроек своего компьютера. Наслаждайтесь!

14
ответ дан 8 December 2019 в 03:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: