Таблица + БД + реестр - Visual Basic .NET
Формулировка задачи:
Приветствую всех единомышленников! С наступающим праздником!
Помогите в дилемме, сам не могу решиться, а на что решился, не могу победить:
Есть:
есть в реестре раздел, в нём 30 подразделов с 22-мя одинаковыми ключами.
Надо:
- на форме отобразить таблицу, в колонках - 30 подразделов, в строках - 22 ключа;
- после изменений в таблице значения какого-нибудь ключа, запись в реестр.
Для этого, как я понимаю, нужна промежуточная БД. Пробовал и Access и XML и INI и Excel, всё приемлемо.
Чтение-запись реестра тоже не вызывает трудностей.
А вот с самой таблицей - беда! B VB6 дружил с DataGrid и вроде бы с GridView, т.е. более простыми вариантами таблиц. Там было как то совсем просто - прямое соответствие ячейки таблицы и ячейки БД.
Но в VB.NET2010, а думаю и в остальных .NET версиях тоже, без альтернативы: GridView только при разработке WEB-проекта активна, а с DataGrid что то вообще непонятно, т.е. не могу разобраться. DataGridView считаю слишком громоздкой и навороченной (может быть и зря), но вот как в ней организовать сохранение изменений - проблема. Причём не хотелось бы дополнительных окошек типа TextBox'ов, а просто изменение-сохранение, в крайнем случае через кнопку Save.
Подскажите, пожалуйста, как лучше решить эту задачку, а ещё лучше с примерами. Ещё раз уточню - проблема с сохранением в БД изменений значений ячеек в таблице + одновременность с сохранением в реестре.
Самый идеальный вариант - 660 тектбоксов с прямой привязкой к соответствующим ключам реестра + 52 лабела
но как то не вдохновляет такой вариант...
Решение задачи: «Таблица + БД + реестр»
textual
Листинг программы
- Private pthReestr(), nameCol(), namePrp() As String
- Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- pthReestr={...} 'подразделы
- nameCol={...} 'сокращения от подразделов
- namePrp={...} 'ключи
- setDGV()
- End Sub
- Private Sub setDGV()
- With Me.DataGridView1
- .AllowUserToDeleteRows = False
- .AllowUserToAddRows = False
- .AllowUserToOrderColumns = False
- .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
- .SelectionMode = DataGridViewSelectionMode.FullRowSelect
- 'заголовки колонок (подразделы)
- For i = 0 To 29
- .Columns.Add(nameCol(i), nameCol(i))
- Next
- 'заголовки строк (ключи)
- .RowHeadersWidth = 100
- For i = 0 To 21
- .Rows(i).HeaderCell.Value = namePrp(i)
- Next
- For i = 0 To 29
- For j = 0 To 21
- .Rows(j).Cells(i).Value = My.Computer.Registry.GetValue(pthReestr(i), namePrp(j), Nothing)
- Next
- Next
- End With
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д