Путь разработчика    

Доступность проверенных узлов TreeView в C#

В предыдущем примере использовалась рекурсия для перемещения узлов в элементе управления TreeView и заполнения списка проверяемыми узлами. В этом примере используется несколько иной подход. Он перемещает узлы управления TreeView и использует оператор yield return, чтобы вернуть отмеченные узлы TreeView. Затем основная программа может перебирать возвращаемые узлы.

Следующий метод рекурсивно сканирует узлы в TreeNodeCollection и выводит отмеченные узлы TreeView.

Python

Метод проходит через TreeNodeCollection. Если узел проверен, он использует yield return, чтобы вернуть этот узел.

Затем метод вызывает себя рекурсивно, чтобы найти проверенных потомков этого узла, которые находятся в коллекции Nodes. Он выполняет итерацию над этими потомками и использует yield return, чтобы вернуть их.

Это одна из наиболее распространенных жалоб на синтаксис yield return: он не позволяет вам возвращать IEnumerable в одном выражении. Например, было бы неплохо сделать что-то вроде yield return CheckedNodes (nodes.Nodes).

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

Если вы думаете о том, как работает yield, вы поймете, что это не имеет большого значения с точки зрения производительности. Оператор yield возвращает значение циклу, который выполняет итерацию по своим значениям, а затем приостанавливает собственное выполнение до следующего значения времени. Возможность вернуть IEnumerable в одном из операторов может быть синтаксически удобна, но это не изменит того факта, что программе нужно ждать между каждым возвращаемым значением.

Но вернемся к этому примеру. Чтобы упростить поиск проверенных элемента управления TreeView, программа определяет следующий метод.

Python

Этот метод просто вызывает предыдущий, чтобы найти проверенные узлы TreeView в коллекции Nodes элемента управления.

Обратите внимание, что этот метод просто возвращает результат вызова другому методу CheckedNodes без использования yield return. Если метод использует yield return, то Visual Studio знает, что метод является итератором, и он может возвращать только значения с yield return.
Однако это не так. Этот метод не использует yield return, поэтому разрешено использовать обычный return оператор, чтобы вернуть результат IEnumerable вызова метода. р>

Наконец, основная программа использует следующий код для вызова этого метода.

Python

Источник: http://csharphelper.com/blog/2017/04/yield-checked-treeview-nodes-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Заполните эллипс случайными строками в C#

Как следует из названия, этот пример рисует эллипс, заполненный случайными строками. Однако он не может просто нарисовать эллипс в обработчике событий Pain...

01 06 2020 17:27:56

Чистые функции VS. Нечистые функции в JavaScript

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

31 05 2020 21:55:31

Чтение и запись текста в текстовых файлах в C#

Когда вы нажимаете кнопку «Write» кнопки примера, следующий код записывает значения в текстовые поля в файл. Этот код создает новый StreamWriter для записи...

30 05 2020 0:40:30

Выполнение эффекта «красных глаз» на изображении в C#

В этом примере показан один подход для уменьшения эффекта «красных глаз». Иногда на снимке глаза человека или животного выходят ярко-красным. Это раздражаю...

29 05 2020 16:19:15

Преобразования типов в C#

Что такое конверсии в C#? Преобразование - это механизм преобразования значения одного типа в эквивалентное значение другого типа.  Давайте рассмотрим ниже...

28 05 2020 3:23:53

Как вычислить вероятность события, происходящего в данном количестве испытаний в C#

Сообщение Понять вероятности несвязанных событий (и избежать зомби) объясняет, как рассчитать вероятность события, происходящего в определенном количестве...

27 05 2020 9:11:51

Изучаем C++ через программирование игр

Если вы хотите научиться программировать первоклассные игры, вам просrо необходимо изучить язык С++. Эrа книга поможет вам освоить разработку игр с самых а...

26 05 2020 13:19:20

Сделать общий класс очереди приоритетов в C#

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

25 05 2020 14:35:55

В чем смысл System.out.println в Java?

System.out.println - это оператор Java, который печатает переданный аргумент, в System.out, который обычно является stdout. System - класс out - это переме...

24 05 2020 8:53:58

Каковы final переменные в Java?

Конечным ключевым словом является зарезервированное ключевое слово в Java для ограничения пользователя и его можно применять к переменным-членам, методам,...

23 05 2020 23:41:43

Что такое JVM и является ли она независимой от платформы?

Java Virtual Machine (JVM) - это спецификация, предоставляющая среду выполнения, в которой может быть запущен Java-байт-код (файлы .class). JVM - платформа...

22 05 2020 8:42:24

Новая большая книга CSS (Дэвид Макфарланд)

Технология CSS3 позволяет создавать профессионально оформленные сайты, но тонкости этого языка могут оказаться довольно сложными даже для опытных веб-разра...

21 05 2020 18:26:20

Сравните изображения, чтобы найти различия в C#

В этом примере вы можете сравнивать изображения, чтобы убедиться, что они одинаковые. Когда вы выбираете два изображения для сравнения и нажмите кнопку Go,...

20 05 2020 3:54:52

Как получить IP-адрес в Python

Модуль сокетов в Python обеспечивает доступ к интерфейсу сокетов BSD. Имя socket.gethostbyname (имя хоста) переводит имя хоста в формат адреса IPv4. Адрес...

19 05 2020 10:42:45

Код рефакторинга в C#

Что такое рефакторинг?  Это процесс улучшения читаемости, сложности и производительности кода путем изменения: Внутренняя структура кода. Внешнее поведение...

18 05 2020 2:58:58

Глаза, которые следят за мышью в C#

В этом примере используется Timer с именем tmrTick для отслеживания мыши. Его обработчик событий Tick, который показан в следующем коде, обновляет глаза. О...

17 05 2020 10:27:38

Найти, открыть и заменить текст в файлах на C#

Пример Поиск файлов и замена текста в их в C# показывает, как вы можете найти и заменить текст в файлах. В этом примере вы можете открыть открытые файлы, д...

16 05 2020 6:33:31

Использовать операторы set в C#

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

15 05 2020 6:27:39

Определить настраиваемые классы исключений в C#

Пример Выброс стандартного исключения в C# объясняет, как бросить исключения, чтобы сообщить программе о неожиданных ошибках. Пример См. Иерархию классов и...

14 05 2020 13:21:57

Метод Substring() в Java

Подстрока является частью строки. Метод String substring() Java String возвращает новый строковый объект из данной строки. Синтаксис String str = "Java Str...

13 05 2020 12:29:47

Hello World! Занимательное программирование ( Картер Сэнд, Уоррен Сэнд )

Привет! Любишь компьютерные игрушки? А хочешь попробовать написать что-нибудь сам? Представь, как зауважают тебя друзья, когда ты покажешь им игру своей со...

12 05 2020 17:25:37

Как аннотации работают на Java?

Аннотации Java используются для предоставления метаданных для Java-кода, хотя они не являются частью самой программы. Метаданные - это данные о данных. Так...

11 05 2020 15:48:11

Использование именованные и необязательные параметры в C#

Дополнительные параметры - одно из немногих дополнений в последних версиях Visual Studio, которые действительно полезны. Обычно я пытаюсь опубликовать прим...

10 05 2020 14:50:17

Как генерировать случайные целые числа в определенном диапазоне в Java

В Java 1.7 или более поздней версии стандартный способ сделать это выглядит следующим образом: min: минимальное значение max: максимальное значение Пример...

09 05 2020 5:20:57

Добавьте экран UAC для управления в C#

В Windows Vista и более поздних версиях Windows вы должны добавить экран UAC (контроль доступа пользователя) к кнопкам, запускающим процессы, требующие пов...

08 05 2020 2:40:54

Бухгалтерский и налоговый учет в 1С:Бухгалтерии 8 (С.Харитонов)

В пособии " Бухгалтерский и налоговый учет в 1 С: Бухгалтерии 8" рассматривается технология ведения бухгалтерского и налогового учета в программе "1 С: Бухгалте...

07 05 2020 3:42:14

Позвольте пользователю выбрать критерии поиска базы данных в C#

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

06 05 2020 8:19:48

Список поставщиков OLE DB, установленных в системе на C#

В этом примере показано, как вы можете указать поставщиков OLE DB, установленных в системе. ( Недавно мне пришлось запускать более старую программу в новой...

05 05 2020 17:20:19

Что такое __init__.py для Python?

Python обеспечивает очень простую систему упаковки, которая представляет собой просто расширение механизма модуля в каталог. Любая директория с файлом __in...

04 05 2020 7:54:37

Быстрое преобразование изображения в оттенки серого в C#

В этом примере показано, как можно быстро преобразовать изображение в оттенки серого с помощью класса Bitmap32, описанного в сообщении Используйте класс Bi...

03 05 2020 20:45:28

Как открыть и прочитать URL-адрес в Java

Чтение с URL-адреса так же просто, как чтение из входного потока. URL - это аббревиатура Uniform Resource Locator. Java-программы, которые взаимодействуют...

02 05 2020 11:45:17

Как освоить профессию программиста: основные ошибки

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

01 05 2020 14:54:10

Сбор мусора в C#

В этом примере показано, как вы можете принудительно собрать сборку мусора на C#. Языки .NET используют схему сбора мусора управления памятью. Есть несколь...

30 04 2020 14:25:12

Среда разработки PyCharm

PyCharm – интегрированная среда разработки для Python. Разрабатывалась компанией JetBrains. За основу взята другая интегрированная среда разработки Intelli...

29 04 2020 15:33:40

Рисуем преобразованный текст в C#

В этом примере используется следующий обработчик события Paint для рисования преобразованного текста. Код добавляет преобразования к объекту Graphics, чтоб...

28 04 2020 8:50:58

Инициализировать двумерные массивы в C#

Пример Инициализация массивов, списков и экземпляров классов в C# объясняется, как инициализировать одномерный массив. Вы можете использовать аналогичный с...

27 04 2020 8:20:47

Основы программирования в Delphi 7 (Н. Б.Культин)

Книга является руководством по программированию в среде Delphi 7. Описывается весь процесс разработки программы: от конструирования диалогового окна до орг...

26 04 2020 14:36:26

Класс Java HashSet

Класс HashSet расширяет AbstractSet и реализует заданный интерфейс. Набор представляет собой набор, который не содержит повторяющихся элементов и элементы...

25 04 2020 13:44:40

Выбор языка программирования: 6 пунктов при выборе своего языка

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

24 04 2020 9:47:30

Как найти свой IP-адрес и имя компьютера в Java

Класс InetAddress можно использовать для поиска доменных имен (DNS). Имя хоста может быть либо именем машины, например «mail.yahoo.com», либо текстовым пре...

23 04 2020 22:52:11

Зачем нужны общие типы в Java?

В Java 5 вводятся обобщения для включения типов (классов и интерфейсов) в качестве параметров при определении классов, интерфейсов и методов. Они реализова...

22 04 2020 11:40:33

График исторических значений Dow Jones Industrial Average в C#

Эта программа отображает исторические цены на индекс Dow Jones Industrial Average. Я получил данные с этого URL: Поля в URL: Результаты приведены в примере...

21 04 2020 16:57:38

Генерация случайных полигонов в C#

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

20 04 2020 1:10:39

Что такое undefined x 1 в JavaScript?

Часть стандарта ECMA, JavaScript-консоли будут отображать объекты в виде массивов, когда объекты похожи на массивы. Например: для объекта, содержащего стро...

19 04 2020 1:41:10

Язык программирования С++ (Б. Страуструп)

Книга Б. Страуструпа " Язык программирования С++" дает описание языка, его ключевых понятий и основных приемов программирования на нем. Это завершенное руко...

18 04 2020 21:19:25

Как найти шаблоны в Pi в C#

Март 14 известен как день Pi, потому что его числовое представление 3/14 включает в себя первые три цифры Pi: 3.14. ( По крайней мере, в Соединенных Штатах....

17 04 2020 0:38:56

Среда разработки Xcode

Xcode – IDE под Mac OS от Apple. Распространяется бесплатно через App Store. Благодаря свободному набору компиляторов данная среда разработки может работат...

16 04 2020 13:31:16

Сделайте мигающую метку в WPF и C#

В Windows Forms тривиально сделать мигающую метку. Что касается большинства других задач, WPF делает это намного сложнее, но дает вам дополнительную гибкос...

15 04 2020 13:48:39

Получить HTML содержимое веб-страницы с помощью Python

Python предоставляет несколько способов сделать это в своей стандартной библиотеке . Вероятно, самый популярный способ загрузки файла - через HTTP с помощь...

14 04 2020 11:20:11

Является ли Monkey patching хорошей практикой программирования?

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

13 04 2020 4:50:19

Используйте сегменты для рисования трехмерных осей с тиковыми метками с использованием WPF и C#

В этом примере используются методы, описанные в post Нарисуйте улучшенные 3D-сегменты, используя WPF и C# , чтобы нарисовать 3D-оси с тиковыми метками. Вы...

12 04 2020 22:13:45

Актуальные языки программирования

Какие актуальные языки программирования? Программирование все еще остается одной из самых востребовательных сфер деятельности. Именно здесь люди получают самые большие зарплаты, имеют весьма внушительные перспективы для карьерного роста...

11 04 2020 5:39:19


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69