WPF: Направленные события или регулярные события?

Спасибо DisplayName, я изменил только 2 или 3 вещи, и теперь это работает. Вот мой код, если кому-то нужен один день

Sub RecoverData()
Application.ScreenUpdating = False
Dim x As Workbook
Dim t As Range

'## Open both workbooks first:
Set x = Workbooks.Open(Application.ActiveWorkbook.Path & "\data.xlsx")

With x.Sheets("Feuil1") ' reference source sheet
    Set t = .Rows(1).Find("Vendor name", lookat:=xlWhole) ' try searching wanted header in referenced sheet first row
    If Not t Is Nothing Then ' if found
        Range(t.Address).AutoFilter Field:=2, Criteria1:=Array("a*", "b*"), Operator:=xlFilterValues
        Intersect(.UsedRange, t.EntireColumn).SpecialCells(xlCellTypeVisible).Copy _
        Destination:=ThisWorkbook.Sheets("Feuil2").Range("A1") '<<== paste filtered column to destination sheet A1 cell (instead of B1), to match your subsequent removeduplicates call
        ThisWorkbook.Sheets("Feuil2").Range("A1").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
        .AutoFilterMode = False
    Else
        MsgBox "Column Name Not Found"
    End If
End With
x.Close savechanges:=False
Application.ScreenUpdating = True
End Sub
11
задан Andreas Grech 3 May 2009 в 05:56
поделиться

2 ответа

Маршрутизированные события имеют особое поведение, но это поведение в значительной степени невидимо если вы обрабатываете событие в элементе, где оно возникает.

Когда маршрутизируемые события становятся мощными, это если вы используете любой из предложенных сценариев: определение общих обработчиков в общем корне, создание собственного элемента управления или определение собственного пользовательского класса элемента управления.

Маршрутизированные прослушиватели событий и маршрутизированные источники событий не должны совместно использовать общее событие в своей иерархии. Любой UIElement или ContentElement может быть прослушивателем событий для любого перенаправленного события. Таким образом, вы можете использовать полный набор перенаправленных событий, доступных в рабочем API-интерфейсе, в качестве концептуального «интерфейса». в результате чего разрозненные элементы в приложении могут обмениваться информацией о событиях. Эта концепция «интерфейса» для перенаправленных событий особенно применима для входных событий.

Маршрутизированные события также можно использовать для связи через дерево элементов, поскольку данные события для события сохраняются для каждого элемента в маршруте. Один элемент может что-то изменить в данных события, и это изменение будет доступно для следующего элемента в маршруте.

Помимо аспекта маршрутизации, есть две другие причины, по которым любое данное событие WPF может быть реализовано как перенаправленное событие вместо стандартного события CLR. Если вы реализуете свои собственные мероприятия, вы также можете рассмотреть следующие принципы:

  • Некоторые функции стилей и шаблонов WPF, такие как EventSetter и EventTrigger , требуют, чтобы указанное событие было перенаправленным событием. Это сценарий идентификатора события, упомянутый ранее.
  • Маршрутизированные события поддерживают механизм обработки класса, посредством которого класс может указывать статические методы, которые имеют возможность обрабатывать перенаправленные события, прежде чем любой зарегистрированный обработчик экземпляра сможет получить к ним доступ. Это очень полезно при разработке элементов управления, потому что ваш класс может обеспечивать поведение классов, управляемое событиями, которое не может быть случайно подавлено обработкой события в экземпляре.

Источник: MSDN: Обзор маршрутизируемых событий

11
ответ дан 3 December 2019 в 09:42
поделиться

В WPF широко используется композиция элементов управления, что требует использования события Routed, поскольку композиция набора элементов управления в большинстве случаев отображает одну активность.

0
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

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