Программирование PC Visual Studio C++ 2010 Express: как работать с DataGridView Sat, December 16 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Visual Studio C++ 2010 Express: как работать с DataGridView Печать
Добавил(а) microsin   

DataGridView - стандартный GUI компонент для отображения и редактирования таблиц. Здесь коротко рассмотрены основные моменты работы с этим классом. 

1. Перекиньте стандартным способом в форму компонент DataGridView.

DataGridView-adding.PNG

Источник данных при создании можно не указывать, так как DataGridView позволяет хранить данные внутри себя и добавлять/удалять их на лету, во время выполнения (runtime). После этого редактором свойств настройте поведение по умолчанию нового экземпляра DataGridView. Я обычно меняю свойства AllowUserToAddRows на false, AllowUserToDeleteRows на false, ReadOnly на true. Можно также переименовать экземпляр из dataGridView1 в что-нибудь более осмысленное, подходящее для Вашей программы.

2. Столбцы и строки можно добавлять во время выполнения программы (см. [1]). Однако если назначение и структура таблицы (количество и наименование столбцов) известны заранее, то можно редактором свойств добавить столбцы. Для этого редактируют свойство Columns.

DataGridView-edit-columns.PNG

3. Обращение к ячейкам DataGridView довольно простое. Индексация столбцов (Columns) и строк (Rows) идет относительно нуля. Столбец с индексом 0 самый левый, и строка с индексом 0 самая верхняя. Количество строк можно получить через свойство RowCount. Добавляются строки методом Удаляются строки методом Rows->Add(), удаляются методом Rows->RemoveAt(номер строки). Пример добавления и удаления строк: 

//добавим в dataGridView1 4 строки
dataGridView1->Rows->Add();
dataGridView1->Rows->Add();
dataGridView1->Rows->Add();
dataGridView1->Rows->Add();

//удалим все строки из dataGridView1
while (0 != dataGridView1->RowCount)
  dataGridView1->Rows->RemoveAt(0);

4. Узнать номер текущей строки можно через HitTestInfo->RowIndex

int idx = dataGridView1->HitTestInfo->RowIndex;

Установить (поменять) текущую строку можно через свойство CurrentCell (в примере устанавливаем третью текущую строку): 

int idx = 2;
dataGridView1->CurrentCell = dataGridView1->Rows[idx]->Cells[0];

Текущая строка помечена в таблице треугольничком:

DataGridView-current-row.PNG 

5. Менять данные в ячейках таблицы можно только тогда, когда существуют соответствующий столбец и соответствующая строка, иначе произойдет ошибка выполнения ("System.ArgumentOutOfRangeException" произошло в mscorlib.dll Дополнительные сведения: Индекс за пределами диапазона. Индекс должен быть положительным числом, a его размер не должен превышать размер коллекции.). После добавления строки методом Add все значения в ячейках добавленной строки будут пустые. К ячейке таблицы можно обращаться по номеру столбца и номеру строки через свойство Value. Пример добавления и заполнения таблицы: 

int i = 0;     //нумерация строк начинается с 0

if ( (dataGridView1->RowCount - 1) < i )
  dataGridView1->Rows->Add();

//№ строки добавляем в первый столбец Cells[0]
dataGridView1->Rows[i]->Cells[0]->Value = (i+1).ToString();
//текст добавим во второй столбец Cells[1]
dataGridView1->Rows[i]->Cells[1]->Value = "пример текста";

i++;          //переходим к следующей строке
dataGridView1->Rows[i]->Cells[0]->Value = (i+1).ToString();
  ...

6. Пример изменения цвета нужной ячейки на C#:

private void msgtable(string msg, Color textcolor)
{
   dataGridView1.Rows[rowidx].Cells[2].Style.ForeColor = textcolor;
   dataGridView1.Rows[rowidx].Cells[2].Value = msg;
}
 
...
case TCalibReport.ITERATE_OK:
   msgtable("OK", Color.Green);
   break;
...

dataGridView Cells Style ForeColor

7. Обработка клика на заголовке строки на C#:

private void dataGridView1_RowHeaderMouseDoubleClick(object sender,
                                                     DataGridViewCellMouseEventArgs e)
{
   rowstart = e.RowIndex;
   rowend = e.RowIndex;
   DisableGUI();
   bwCalibr.RunWorkerAsync();
}

8. Как удалить последнюю пустую строку?

DataGridView last empty row

Ответ: после манипуляции со строками и добавления новых строк установите в false свойство AllowUserToAddRows:

dataGridView1.AllowUserToAddRows = false;

[Ссылки]

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

 

Добавить комментарий


Защитный код
Обновить

Top of Page