Как вызвать проверку при нажатии на меню ToolStripButton из MDI в приложении Windows Form? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть ContextMenuStrip с ToolStripButtonMenu «Печать».Открыта дочерняя форма MDI, содержащая DataGridView.Я делаю проверку редактируемого столбца «Копии» в этой сетке.Я не хочу, чтобы пользователь вводил буквы, например.Проверка работает нормально, когда я покидаю ячейку, но если я нажимаю на элемент управления, например кнопку «Печать», проверка не вызывается.

На следующем снимке экрана показано, как я могу нажать кнопку «Печать».", когда ячейка Копии содержит буквы:

enter image description here

// The code for the cell validation
private void QuantitiesDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {
        if (e.ColumnIndex == QuantitiesDataGridView.Columns[COL_COPIES].Index)
        {
            QuantitiesDataGridView.Rows[e.RowIndex].ErrorText = "";
            int enteredValue;

            if (!int.TryParse(e.FormattedValue.ToString(), out enteredValue) || enteredValue < 1)
            {
                e.Cancel = true;
                QuantitiesDataGridView.Rows[e.RowIndex].ErrorText = "Invalid number of copies";
            }
        }
    }

Я искал свойство ToolStripButtonMenu, такое как CauseValidation, но это не такодин.

Есть ли способ вызвать проверку при нажатии на одно из ToolStripButtonMenu, чтобы кнопка «Печать» не срабатывала до тех пор, пока значение «Копии» не станет действительным?

1 Ответ

0 голосов
/ 12 сентября 2018

В методе Click вашего ToolStripButton попробуйте вызвать функцию ValidateChildren активной формы:

private void toolStripButton1_Click(object sender, EventArgs e) {
  if (this.ActiveMdiChild.ValidateChildren()) {
    // do your processing ...
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...