Рейтинг@Mail.ru
aave

aave

Print Friendly, PDF & Email

Часто в приложении бывает необходимо использовать объёмные ресурсы, например, динамические библиотеки. Их можно включить в ресурсы приложения в сжатом виде. .NET имеет встроенный архиватор GZip. Его можно использовать, например, так:

''' 
''' Проверяет наличие необходимых DLL в текущей директории и при отсутствии создаёт.
''' 
Private Sub CheckDlls()
    Dim dlls As New Dictionary(Of String, Byte()) From {
        {"myLib1.dll", My.Resources.myLib1},
        {"myLib2.dll", My.Resources.myLib2}
    }
    For Each dll In dlls
        If (Not IO.File.Exists(dll.Key)) Then
            Using compressed As New IO.MemoryStream(dll.Value),
            gzStm As New IO.Compression.GZipStream(compressed, IO.Compression.CompressionMode.Decompress),
            decompressed As IO.FileStream = IO.File.Create(dll.Key)

                gzStm.CopyTo(decompressed)

            End Using
        End If
    Next

End Sub
Print Friendly, PDF & Email
Подробнее ...
Print Friendly, PDF & Email

В C# есть оператор, который возвращает размер типа, занимаемый в памяти:

sizeof(float)

Его аналог в VB.NET:

Marshal.SizeOf(GetType(Single))
Print Friendly, PDF & Email
Подробнее ...
Print Friendly, PDF & Email

Чтобы сделать сортируемую наблюдаемую коллекцию в WPF, можно создать методы расширения для типа ObservableCollection:

Imports System.Collections.ObjectModel
Imports System.Runtime.CompilerServices

Module ObservableCollectionExtensions

    <Extension>
    Public Sub Sort(Of T)(ByRef collection As ObservableCollection(Of T), comparison As Comparison(Of T))
        Dim sortableList = New List(Of T)(collection)
        sortableList.Sort(comparison)
        For i As Integer = 0 To sortableList.Count - 1
            collection.Move(collection.IndexOf(sortableList(i)), i)
        Next
    End Sub


 <Extension>
    Public Sub Sort(Of T As IComparable)(ByRef collection As ObservableCollection(Of T))
        If (collection.Count > 1) Then
            Dim sortableList As New List(Of T)(collection)
            Dim comp As Comparison(Of T) = Function(a, b) a.CompareTo(b)
            sortableList.Sort(comp)
            For i As Integer = 0 To sortableList.Count - 1
                collection.Move(collection.IndexOf(sortableList(i)), i)
            Next
        End If
    End Sub

End Module

Использование:

    MyCollection.Sort(Function(a, b) a.CompareTo(b))

или просто:

    MyCollection.Sort()
Print Friendly, PDF & Email
Подробнее ...
Print Friendly, PDF & Email

Чтобы изменить стиль линий сетки в WPF:

    Private Sub ShowGridLines()
        Dim t = Type.GetType("System.Windows.Controls.Grid+GridLinesRenderer," _
                                 & " PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")
        Dim glr = Activator.CreateInstance(t)
        glr.GetType().GetField("s_oddDashPen", Reflection.BindingFlags.Static Or Reflection.BindingFlags.NonPublic).SetValue(glr, New Pen(Brushes.Silver, 0.2))
        glr.GetType().GetField("s_evenDashPen", Reflection.BindingFlags.Static Or Reflection.BindingFlags.NonPublic).SetValue(glr, New Pen(Brushes.Silver, 0.2))
        matrixGrid.ShowGridLines = True

    End Sub
Print Friendly, PDF & Email
Подробнее ...
Подписаться на этот канал RSS