Я сделал код для работы со штрих-кодами кода 39 во встроенных системах. Есть два стиля кодов, которые я считаю 39 "обычными" кодами и четырьмя "чудаковами". Обычные коды имеют один из десяти шаблонов ширины стержня (два широких три узких) и один из четырех шаблонов ширины пространства (один широкий три узких). Чудеса имеют пять узких полос и один из четырех шаблонов ширины полос (три широких и один узкий). Чтобы отобразить штрих-код с компактным кодом, преобразуйте символ в число 0–39 (для нормальных кодов) или 40, 50, 60 или 70 для «странных шаров». Затем divmod 10. Верхняя цифра выберет один из восьми шаблонов ширины пространства; если верхняя цифра равна трем или меньше, нижняя цифра выберет один из десяти шаблонов ширины стержня. Если верхняя цифра 4-7, все пять столбцов должны быть узкими.
Код работает очень компактно, используя несколько небольших справочных таблиц. Поскольку справочные таблицы могут быть компактно представлены в виде строк в исходном коде, подходы с большими справочными таблицами могут иметь более короткий исходный код (хотя я думаю, что для Code Golf размер исходного кода должен учитываться в байтах с использованием наиболее подходящего кодирования; подход со строкой странные символы, для хранения которых требуется три байта в UTF-8, и два байта для UTF-16, должны либо «заряжаться» по 3 байта каждый для символов странного шара, либо два байта каждый для всех символов, в зависимости от того, что меньше. Подход, в котором используется выбор нечетных символов, которые полностью помещаются в определенную однобайтовую кодовую страницу, должен оплачиваться по одному байту на символ.
Another great resource for learning MVP with WinForms is Jeremy Millers Build Your Own CAB series. I found this incredibly useful when I was learning,
The article on View to Presenter Communication will be useful to you; there is a good discussion here on using events vs making direct calls. Even better, the Event Aggregator article presents a "publish/subscribe" mechanism that can be used instead of events, while keeping the code testable. This is the approach that I personally prefer, and have had good success with.
Посмотрите этот пример реализации пассивного просмотра. У него есть хороший способ подключения / отключения событий между представлением и контроллером, который возлагает большую часть работы на контроллер.