Вы можете условно добавить в свою схему проверки, как и любой другой объект:
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);
В Windows есть настройка показывать подчеркивание или нет. Чтобы изменить настройку,
Они будут отображаться только во время выполнения, когда пользователь нажимает клавишу Alt. Когда вы нажимаете клавишу Alt, форма думает, что вы, возможно, захотите использовать один из ярлыков, поэтому он отображает любое подчеркивание.
Вы можете заставить пользователя видеть подчеркивание, создав настраиваемое средство визуализации 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, но мне нравится настраивать цветовую таблицу. Это исправление, которое не требует от клиента изменения настроек своего компьютера. Наслаждайтесь!