Пузырение события.

Добавление Application.EnableEvents = False в начале кода, а затем возврат к истине поможет, также использование Applciation.ScreenUpdating = False также поможет.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim L As Long
Dim r As Range

Application.EnableEvents = False
Application.ScreenUpdating = False

L = Cells(Rows.Count, "R").End(xlUp).Row

If Not Intersect(Target, Range("C4")) Is Nothing Then
    For Each r In Range("R2:R" & L)
        If r.Value = "Y" Then
            Rows(r.Row).Hidden = True
        Else
            Rows(r.Row).Hidden = False
        End If
    Next
End If

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub
26
задан leora 20 October 2008 в 00:48
поделиться

6 ответов

Если все, что Вы делаете, запускает обработчик событий из другого обработчика событий, можно отключить среднего человека и сцепить обработчики событий непосредственно в добавить/удалить блоках для события.

, Например, если у Вас есть UserControl с событием "SaveButtonClick" и всем, которое Вы хотите сделать, когда вызов обработчик событий, когда "SaveButton" на Вашем UserControl нажат, можно сделать это:

public event EventHandler SaveButtonClick
{
    add { this.SaveButton.Click += value; }
    remove { this.SaveButton.Click -= value; }
}

Теперь Вам не нужен никакой код для увольнения события SaveButtonClick - это будет автоматически запущено когда SaveButton. Событие щелчка генерируется (т.е. когда кто-то нажимает ту кнопку).

31
ответ дан 28 November 2019 в 07:31
поделиться

Peter Rilling отправил способ моделировать Распространение событий / Широковещательно передающий в winforms. Это просто и эффективно.

http://www.codeproject.com/KB/cs/event_broadcast.aspx

3
ответ дан 28 November 2019 в 07:31
поделиться

Имейте чтение блога Jeremy Miller "Разработчик Тенистого дерева", особенно его серия Write Your Own CAB - материал шаблона "команда" он говорит о существует, вероятно, в чем Вы нуждаетесь.

3
ответ дан 28 November 2019 в 07:31
поделиться

Если я не вижу немного больше дизайна.. будет трудно дать хороший ответ.

WPF приводит в порядок пузырьковые события (автоматически) дерево Компонента/Управления UI..., это было теперь встроено в платформу. Таким образом, я предполагаю, что это - рекомендуемый путь:)

проблема обойти среднего человека Layer2 - то, что Layer1 и Layer3 теперь знают друг друга... связаны. Таким образом, это - компромисс.. если Вы хорошо со связью.. устраните среднего человека / изобретают специализированный компонент с этой ответственностью. Однако, если бы Вы ожидаете, что Уровень 3 будет заменяем в горячем режиме (слабая связь), я сказал бы, продолжают пузыриться.

1
ответ дан 28 November 2019 в 07:31
поделиться

У Вас может быть центральный канал та единственная поддержка события. Этот канал должен быть независимым, таким образом, слой только публикует или подписывается на него.

0
ответ дан 28 November 2019 в 07:31
поделиться

Смотрите на .NET Средств управления Обновлением . Эти средства управления обнаруживают части Вашей модели данных, что они зависят от даже через слои бизнес-логики. Вы не должны писать никакой код для уведомления их.

0
ответ дан 28 November 2019 в 07:31
поделиться
Другие вопросы по тегам:

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