Анализатор TLE (two-line element) и элементов орбит ИСЗ
Опубликовано в Приложения
Опубликовано в Приложения
Для передачи события прокрутки колеса мыши родительскому элементу, сначала определим в XAML событие PreviewMouseWheel.
<TreeView PreviewMouseWheel="ScrollingToParent" />
Теперь напишем обрабатывающий это событие метод таким способом:
''' <summary> ''' Обеспечивает передачу события прокрутки колеса мыши родительскому элементу. ''' </summary> Private Sub ScrollingToParent(sender As Object, e As MouseWheelEventArgs) e.Handled = True Dim e2 As New MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta) With { .RoutedEvent = UIElement.MouseWheelEvent, .Source = sender } Dim parent As UIElement = CType(CType(sender, Control).Parent, UIElement) parent.RaiseEvent(e2) End Sub
Среда .NET позволяет переопределять стандартные операторы. В частности, оператор CType(). Однако большинство примеров даются на языке C#. Чтобы переопределить оператор CType() в языке VB.NET, нужно поступить следующим образом:
Public Shared Widening Operator CType(m As MyClass) As String Return $"Это тип {m.GetType()} приведён к типу System.String." End Operator
Здесь ключевое слово widening является указанием на то, что данное преобразование типов является расширяющим преобразованием (в отличие от narrowing – сужающего). Это значит, что при выполнении данного преобразования мы не потеряем данные, и оно может быть выполнено безопасно.
Замечу, что нельзя приводить тип к своему базовому классу, и наоборот: базовый – к дочернему.
Удобно использовать несколько конструкторов объектов, реализующих интерфейс IDisposable, внутри одной инструкции Using. Поясню на примере:
Using fs As New FileStream("file.txt", FileMode.Open) Using sr As New StreamReader(fs, Text.Encoding.GetEncoding(1251)) 'читаем содержимое файла и что-то делаем с ним… End Using End Using
можно заменить на:
Using fs As New FileStream("file.txt", FileMode.Open), sr As New StreamReader(fs, Text.Encoding.GetEncoding(1251)) 'читаем содержимое файла и что-то делаем с ним… End Using