Visual Basic, который
работает сегодня
Разборы VB6, VB.NET, ASP.NET и WPF с рабочим кодом и современными альтернативами.
Первый GridView: выводим таблицу из SQL Server в ASP.NET
Минимальный рабочий пример: кнопка на странице, запрос к базе Northwind и таблица GridView с результатом. Плюс то, что обычно опускают в «hello world»: Using, web.config и IsPostBack.
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html>
<html lang="ru">
<head runat="server">
<title>Категории</title>
</head>
<body>
<form id="form1" runat="server">Разбираем код на стеке Microsoft и вебе: от VB6 и классического ASP до .NET 8
Одна база. Ответы на вопросы
по старому коду.
Каждая статья отвечает на одну задачу: прочитать файл, отправить письмо, разбить GridView на страницы. Без воды и с проверенным кодом.
Поиск, который знает VB
Ищите по задаче, а не по точному названию. «Отправить письмо» найдёт и CDO в VB6, и SmtpClient в ASP.NET.
Код, который запускается
Примеры короткие, с комментариями и обработкой ошибок. Копируются в один клик.
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html>
<html lang="ru">
<head runat="server">
<title>Категории</title>
</head>Было и стало
В каждой статье есть блок «Как это делают сегодня»: тот же приём на современном .NET.
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(path, 1)
text = ts.ReadAll
ts.CloseDim text = File.ReadAllText(path, Encoding.UTF8)
' или асинхронно, без блокировки UI
Dim t = Await File.ReadAllTextAsync(path)Восемь разделов. Одна логика.
Выберите технологию: внутри собраны разборы от простого к сложному.

Классический VB6: чтение и запись файлов, обход папок, отправка почты, автоматизация Excel и запросы к вебу из COM.

VB.NET для настольных приложений: файлы и папки, INI-настройки, хеши, списки баз SQL Server, многопоточность в WinForms и подсветка синтаксиса через Regex.

JavaScript глазами VB-разработчика: даты, строки и обрезка пробелов, cookie, всплывающие окна, позиция курсора, каскадные списки на Ajax и CSS-приёмы для старых Web Forms страниц.

ASP.NET Web Forms: почта через SmtpClient, файлы и ZIP-архивы, загрузка картинок, экспорт в Excel, темы и скины, динамические контролы и шифрование web.config.

ASP.NET Ajax и Control Toolkit: автодополнение из базы, обработка ошибок частичных обновлений, свои серверные контролы.

Всё про GridView: шаблоны и стили, сортировка, постраничный вывод и свой пейджинг, итоги в подвале, группировка строк, колонки-флажки и редактирование.

Привязка данных в ASP.NET: DataSet и DataTable, хранимые процедуры, LINQ to Entities, Repeater, ListView с DataPager и GroupTemplate, TreeView из связанных таблиц.

WPF для тех, кто пришёл из WinForms: привязка TreeView, меню, ListBox, ListView и DataGrid к DataSet, автоподсказка в TextBox и стили кнопок со свечением.
Как устроена каждая статья
Один и тот же порядок во всех разборах, чтобы вы находили нужное за секунды.
- ЗадачаЧто именно не работает и в какой версии.
- Рабочий кодМинимальный пример, который запускается.
- Разбор по строкамПочему так, а не иначе, и где грабли.
- Как сегодняСовременная замена на .NET и вебе.
Новое в базе
Событие ItemDataBound в ASP.NET ListView: доступ к данным и контролам строкиItemDataBound вызывается для каждой строки ListView сразу после привязки данных. Это лучшее место, чтобы поменять оформление, спрятать кнопку или заполнить вложенный список по значению из записи.
Данные и привязка
Привязка GridView к LINQ to Entities: проекции, сортировка и постраничный выводEntity Framework позволяет отдать GridView результат LINQ-запроса вместо DataTable. Разбираем, как сделать это без утечек контекста, лишних колонок и выборки всей таблицы ради одной страницы.
WPF
WPF Menu с привязкой данных: меню из коллекции, команды и вложенные пунктыМеню, собранное вручную в XAML, неудобно, когда пункты зависят от прав пользователя или хранятся в базе. Покажем, как построить WPF Menu из коллекции объектов и связать пункты с командами.
ASP.NET
Архивирование нескольких файлов в ZIP в ASP.NET и отдача архива пользователюПользователь отметил десять отчётов и хочет скачать их одним файлом. Собираем ZIP-архив на лету, пишем его прямо в Response и не оставляем на диске сервера временного мусора.
Данные и привязка
Как загрузить DataSet из хранимой процедуры SQL ServerХранимая процедура плюс SqlDataAdapter это классический способ наполнить DataSet в приложениях на VB.NET. Показываем аккуратную версию кода: с Using, типизированными параметрами и несколькими таблицами.
Данные и привязка
OUTPUT-параметры хранимой процедуры SQL Server в ASP.NETХранимая процедура может вернуть не только набор строк, но и отдельные значения через OUTPUT-параметры. Разбираем, как объявить их в ADO.NET, когда читать результат и почему он бывает пустым.
GridView
Группировка строк в ASP.NET GridView: RowSpan и строки-заголовки группGridView не умеет группировать строки, но это легко добавить. Покажем два приёма: объединение повторяющихся ячеек через RowSpan и отдельную строку-заголовок над каждой группой с подсчётом итогов.
WPF
Привязка WPF TreeView к реляционному DataSet через HierarchicalDataTemplateВ WPF дереву не нужен XML-посредник: HierarchicalDataTemplate умеет ходить по DataRelation напрямую. Достаточно правильно назвать связь и сослаться на неё в привязке.
Данные и привязка
GroupTemplate в ASP.NET ListView: сетка из нескольких колонокКаталог в три колонки, галерея по четыре фото в ряд: такие сетки ListView строит сам через GroupTemplate. Разбираем, как работают плейсхолдеры, GroupItemCount и шаблон пустой ячейки.
GridView
Календарь в GridView: удобный ввод дат в режиме редактированияДата, введённая руками в TextBox, это постоянный источник ошибок: 03.04 или 04.03? Разбираем, как встроить в редактируемую строку GridView календарь и не запутаться в форматах.
Из блога
МиграцияЗамена Crystal Reports в VB6 и .NET-приложениях: RDLC, SSRS, FastReport и генерация PDF кодомОтчёты на Crystal Reports часто оказываются последним, что держит приложение на старой платформе. Разбираем, где проходят границы поддержки движка, какие есть замены и как переносить сотню .rpt-файлов без потери печатных форм.
Мы пишем так, чтобы пример из статьи запустился с первой попытки. Если код нельзя скопировать и проверить за пять минут, это не разбор, а пересказ документации.

Частые вопросы
Это перевод старого англоязычного сайта?
Нет. Темы мы взяли из архива старой базы, но каждую статью написали заново на русском: проверили код, добавили пояснения и блок о том, как задачу решают сейчас.
Код из статей можно брать в рабочий проект?
Да, без ограничений. Примеры короткие и самодостаточные. Перед продом проверьте обработку ошибок и права доступа: в статьях мы отмечаем места, где это критично.
Почему VB6 и Web Forms, если есть .NET 8?
Потому что такие системы работают в тысячах компаний, и их кто-то сопровождает. Мы помогаем чинить и дорабатывать legacy, а в блоге разбираем, как постепенно с него уйти.
Как найти нужную статью быстрее?
Нажмите Ctrl K или кнопку «Поиск» в шапке. Поиск идёт по заголовкам, тегам и описаниям всех 75 статей и записей блога.
Можно предложить тему?
Да. Напишите через страницу «Предложить тему»: опишите задачу и версию VB или .NET. Самые частые вопросы превращаем в новые разборы.
Начните с раздела,
который горит
Тридцать с лишним разборов уже ждут. Регистрация не нужна.