Рейтинг@Mail.ru

Реализация интерфейса 1-Wire на микросхемах FTDI

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

С интерфейсом 1-Wire мы сталкиваемся ежедневно: он применяется для чтения ключей-«таблеток» от домофона. Микросхемы фирмы FTDI (FT2232, FT4232 и другие) не поддерживают реализацию интерфейса 1-Wire «из коробки». Но программно можно реализовать его самостоятельно. Чем и займёмся в статье.
Читать далее...

Observable collection с уведомлением при добавлении диапазона значений

Published in Полезные советы

В .NET есть такой перечислимый тип как ObservableCollection. Его особенность в том, что эта коллекция при изменении её элементов (добавлении или удалении), уведомляет наблюдающие за ней классы об этом изменении. Это бывает полезно, например, когда к данной коллекции привязаны элементы пользовательского интерфейса. Но если необходимо добавить в коллекцию сразу множество элементов, то добавление каждого элемента будет уведомлять об изменении коллекции каждый раз. Это вызовет избыточную нагрузку на пользовательский интерфейс, и он может даже зависнуть на какое-то время. Чтобы этого избежать, можно написать свой собственный класс, который будет наследовать от ObservableCollection и содержать метод добавления множества элементов за один раз, а уведомлять об этом единожды. Вот как например это можно сделать:

Imports System.Collections.Specialized

''' <summary>
''' ObservableCollection с поддержой добавления множества элементов.
''' </summary>
Public Class ObservableRangeCollection(Of T)
    Inherits ObjectModel.ObservableCollection(Of T)

#Region "CTORs"

    Public Sub New()
        MyBase.New()
    End Sub

    Public Sub New(collection As IEnumerable(Of T))
        MyBase.New(collection)
    End Sub

#End Region '/CTORs

#Region "METHODS"

    ''' <summary>
    ''' Добавляет в коллекцию несколько элементов и в конце уведомляет об этом.
    ''' </summary>
    Public Sub AddRange(collection As IEnumerable(Of T))
        For Each item As T In collection
            Items.Add(item)
        Next
        OnCollectionChanged(New NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, collection))
    End Sub

#End Region '/METHODS

End Class

По аналогии с методом AddRange можно добавить методы для удаления, вставки или перемещения набора элементов коллекции.

Читать далее...

Параметры проекта по умолчанию в Visual Studio

Published in Полезные советы

Рекомендую при написании кода в Visual Studio на VB.NET всегда использовать жёсткую проверку соответствия типов, которая задаётся директивой Option Strict. При создании нового проекта с настройками среды по умолчанию, используется нестрогая проверка. Чтобы каждый раз не менять данную директиву в свойствах проекта, её можно поменять в настройках Visual Studio: Options — Projects and Solutions — VB Defaults — Option Strict

Настройки по умолчанию для новых проектов, создаваемых в Visual Studio
Настройки по умолчанию для новых проектов, создаваемых в Visual Studio
Читать далее...

Добавление заданного текста к содержимому RichTextBox (WPF)

Published in Полезные советы

Напишем метод, который добавляет к содержимому расширенного текстового поля RichTextBox текст заданного цвета:

Private Sub AppendText(text As String, color As Color)
    With RichTextBox1
            .SelectionStart = RichTextBox1.TextLength
            .SelectionLength = 0
            .SelectionColor = color
            .AppendText(text)
            .SelectionColor = .ForeColor
    End With
End Sub
Читать далее...

Использование нескольких конструкторов в одном блоке Using (VB.NET)

Published in Полезные советы

В Visual Basic .NET есть такая, довольно часто встречающаяся, конструкция:

Using fs As New FileStream(fi.FullName, FileMode.Open)
    Using sr As New StreamReader(fs, Text.Encoding.GetEncoding(1251))
	'...
    End Using
End Using

Для неё есть удобный сокращённый синтаксис:

Using fs As New FileStream(fi.FullName, FileMode.Open), sr As New StreamReader(fs, Text.Encoding.GetEncoding(1251))
    '...
End Using
Читать далее...

Проверка значений, вводимых в поле TextBox, в XAML

Published in Полезные советы

В WPF имеется специальный стандартный механизм, позволяющий выполнять проверку (валидацию) данных, вводимых пользователем в текстовое поле TextBox. Этот механизм называется правилами проверки (validation rule). Для полей ввода, в которые введены недопустимые значения, в WPF даже определён свой стиль: красная рамка вокруг элемента TextBox. Конечно, его можно переопределить.

Чтобы воспользоваться стандартным валидатором, нужно выполнить три простых шага. Давайте рассмотрим их на таком примере: есть свойство MyProperty типа Integer, и его значение должно лежать в границах от 1 до 10.

1) Сначала создаём класс, который является наследником класса ValidationRule:

Читать далее...
Subscribe to this RSS feed