Отмена события EnterCell с дальней точкой распространения - PullRequest
0 голосов
/ 15 марта 2020

Моя программа использует точку распространения спреда в качестве стороннего элемента управления, имеет элемент управления TextBox и элемент управления Spread для отображения данных. Когда пользователь перемещает активную ячейку в развороте, я хочу сделать проверку, что TextBox не должен быть пустым. Если TextBox пуст, событие EnterCell должно быть Отмена, и 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 Ответ

1 голос
/ 19 марта 2020

Насколько мне известно, мы ничего не можем сделать, чтобы "отменить" событие 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
...