Страница 15

Все о DataGridView. Учебник

Главная
Страница 1
Страница 2
Страница 3
Страница 4
Страница 5
Страница 6
Страница 7
Страница 8
Страница 9
Страница 10
Страница 11
Страница 12
Страница 13
Страница 14
Страница 15
Страница 16
Страница 17
Страница 18
Страница 19
Страница 20
Страница 21
Страница 22
Страница 23
Страница 24
Страница 25
Страница 26






Скачать учебник
Предыдущая страница
Следующая страница
имеет тип Object и доступно на запись. Собственно, цель обработчика события заключается в том, чтобы на основе индексов колонки и строки вычислить значение ячейки и подставить его в свойство Value. Именно это значение и будет использовать DataGridView в качестве значения ячейки.

Чтобы в виртуальном режиме получить вводимые данные, необходимо реализовать обработчик еще одного события, CellValuePushed. Его параметр «e» имеет тот же тип, что и у события CellValueNeeded, но свойство Value используется не для задания значения ячейки, а наоборот, для считывания значения, введенного пользователем.

Ниже приведен пример примитивной электронной таблицы, данные в которой хранятся в хеш-таблице. Электронная таблица имеет большое количество ячеек. В данном примере это 65 535 строк * 26 (по числу букв английского алфавита) колонок = 1703910. Понятно, что если хранить значения каждой из них займут довольно много памяти. Однако в большинстве случаев в электронной таблице используется очень мало ячеек, которые, тем не менее, могут быть случайным образом разбросаны по всей таблице. Самый эффективный способ хранения в таких условиях – хеш-таблица, ключом которой является сочетание индексов строки и колонки.

Виртуальный режим DataGridView позволяет показывать пользователю всю таблицу (то есть все 1703910 ячеек), но выводит данные только для заполненных ячеек.

using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
 
namespace WindowsApplication1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      ((ISupportInitialize)_grid).BeginInit();
      _grid.VirtualMode = true;
      _grid.CellValueNeeded += _dataGridView_CellValueNeeded;
      _grid.CellValuePushed += _dataGridView_CellValuePushed;
      _grid.Dock = DockStyle.Fill;
      // формируем 26 колонок с именами, соответствующими 
      // буквам латинского алфавита 
      for (int i = 0; i < 'Z' - 'A'; i++)
      {
        string name = ((char)('A' + i)).ToString();
        _grid.Columns.Add(name, name);
      }
 
      _grid.RowCount
Предыдущая страница
Следующая страница
Хостинг от uCoz