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

aave

Пример использования типа Lookup() в VB.NET

Published in Программирование

Print Friendly, PDF & Email

При хранении некоторых видов данных удобно использовать коллекции типа пара «ключ-значение» (тип KeyValuePair). В .NET для этого существует специальный тип Dictionary() – словарь, позволяющий хранить такие данные, добавлять и удалять данные в процессе выполнения программы, а также быстро и удобно извлекать их из словаря. Данные извлекаются по уникальному ключу. При попытке добавить значение с ключом, который уже существует в словаре, возникает исключение. Но что делать, если в реальных данных имеется ключ, которому соответствуют несколько разных значений? Для такого случая подойдёт тип Lookup(), работу с которым мы и рассмотрим далее.

Print Friendly, PDF & Email
Читать далее...
Print Friendly, PDF & Email

Чтобы обработать неперехваченное исключение в приложение .NET, в основной модуль сборки, в процедуру загрузки главной формы приложения или в класс AppEvents.vb, добавим код:

Private Sub formLoading(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf onUnhandledException
End Sub

Собственно, сам обработчик исключения типа UnhandledException:

Private Sub onUnhandledException(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
    MessageBox.Show(String.Format("Источник:{0}. Описание:{1}", sender, e.ExceptionObject), "Возникло необработанное исключение")
    '[Какая-то обработка...]'
End Sub

Теперь, при возникновении исключительной ситуации, которая не была обработана в коде приложения, она будет обработана в данной процедуре.

Print Friendly, PDF & Email
Читать далее...
Print Friendly, PDF & Email

В .NET версии 3.5 без установленного пакета обновления SP1 метод Dispatcher.Invoke() вызывает исключение MethodNotFoundException. При этом средство IntelliSence в Visual Studio показывает порядок аргументов, передаваемых методу: делегат, [параметры].

Чтобы не вызывать исключение, нужно передавать методу Dispatcher.Invoke() параметры в следующем порядке: приоритет операции, делегат, [параметры]. Например (код на VB.NET):

Dispatcher.Invoke(DispatcherPriority.Normal, 
New myDeleg(AddressOf MyDelegate))
Print Friendly, PDF & Email
Читать далее...
Print Friendly, PDF & Email

Чтобы в WPF растянуть содержимое заголовка экспандера Expander.Header на всю ширину, необходимо указать в свойстве Width с помощью расширения разметки следующее:

<Expander>
    <Expander.Header>
        <Grid 
            Width="{Binding RelativeSource
                     ={RelativeSource Mode=FindAncestor, 
                     AncestorType={x:Type Expander}}, 
                     Path=ActualWidth}">
…
        </Grid>
    </Expander.Header>
</Expander>

При таком подходе, если вы имеете множественные элементы типа Expander на странице или в окне, возможны проблемы производительности при отрисовке пользовательского интерфейса (GUI). В этом случае можно поступить так: переопределить стиль экспандера и задать свойству HorizontalAlignment элемента ContentPresenter значение Stretch вместо Left.

Print Friendly, PDF & Email
Читать далее...
Subscribe to this RSS feed