Отмена события EnterCell распространения Farpoint

Моя программа использует дальнюю точку распространения в качестве стороннего элемента управления, у нее есть элемент управления TextBox и элемент управления Spread для отображения данных. Когда пользователь перемещает активную ячейку в разворот, я хочу проверить, что TextBox не должен быть пустым. Если TextBox пуст, событие EnterCell должно иметь значение Cancel, и TextBox должен получить фокус, также активная ячейка распространения не должна изменяться. Я застрял здесь.

В настоящее время я выполнил проверку в событии LeaveCell, но это не работает. Событие EnterCell по-прежнему срабатывает и распространяется, по-прежнему перемещая активную ячейку:(

If TextBox1.Text = String.Empty Then
  MsgBox ("TextBox1 cannot blank")
  TextBox1.Select()
  'TextBox1.Focus() 'I have tried this function but still not working
End If

Пожалуйста, поддержите меня! Спасибо всем.

1 ответ

Решение

Насколько мне известно, мы ничего не можем сделать, чтобы "отменить" событие EnterCell. Однако я обнаружил, что мы можем сделать небольшой трюк, чтобы добиться этого.

Private Sub spread_LeaveCell(sender as Object, e as LeaveCellEventArgs) Handles spread.LeaveCell
  If TextBox1.Text = String.Empty Then
    MsgBox ("TextBox1 cannot blank")
    'This is the trick
    e.NewColumn = e.Column
    e.NewRow = e.Row
    Exit Sub
  End If
  'Other leave cell proceses..
End Sub

...

Private Sub spread_EnterCell(sender as Object, e as EnterCellEventArgs) Handles sprSheet.EnterCell
  If TextBox1.Text = String.Empty Then
    TextBox1.Select()
  End If
Exit Sub
Другие вопросы по тегам