Как вывести массив в datagridview c
Регистрация: 15.12.2014
Сообщений: 24
datagridview двумерный массив
Помогите разобрать функции комментариями
не совсем понимаю некоторые функции и методы.
Суть в том, что заполняется datagridview вручную или случайно, размер задается с помощью numericupdown.
программа вычисляет количество элементов, кратных 3, в каждом столбце массива и указывает столбец, содержащий наибольшее количество чисел кратных 3
< public partial class Form1 : Form < int ArrRows; int ArrColumns; int[,] Arr; public Form1() < InitializeComponent(); ArrRows = (int)numericUpDown1.Value; ArrColumns = (int)numericUpDown2.Value; DataToDGW(ArrRows, ArrColumns);// выводит в datagridview заданную таблицу // при включенном radioButton2 заполняет случайными числами, иначе вручную if (radioButton2.Checked) RndData(dataGridView1); else ZeroData(dataGridView1); >void DataToDGW(int arrRows, int arrColumns) < //удаляем строки в таблице dataGridView1.Rows.Clear(); dataGridView1.Columns.Clear(); for (int i = 0; i < arrColumns; i++) dataGridView1.Columns.Add(i.ToString(), i.ToString()); for (int i = 0; i < arrRows; i++) dataGridView1.Rows.Add(); >void RndData(DataGridView dgv) < Random rnd = new Random(); for (int i = 0; i < dgv.Rows.Count; i++) < for (int j = 0; j < dgv.Rows[i].Cells.Count; j++) < dgv.Rows[i].Cells[j].Value = rnd.Next(-100, 100); >> > void ZeroData(DataGridView dgv) < for (int i = 0; i < dgv.Rows.Count; i++) < for (int j = 0; j < dgv.Rows[i].Cells.Count; j++) < dgv.Rows[i].Cells[j].Value = 0; >> > int[] Calcdata(DataGridView dgv) < Arr = new int[dgv.Rows.Count, dgv.Columns.Count]; int[] res = new int[dgv.Columns.Count]; for (int i = 0; i < dgv.Rows.Count; i++) < for (int j = 0; j < dgv.Rows[i].Cells.Count; j++) < if (Convert.ToInt32(dgv.Rows[i].Cells[j].Value) % 3 == 0) < res[j] ++; >> > return res; > private void numericUpDown1_ValueChanged(object sender, EventArgs e) < ArrRows = (int)numericUpDown1.Value; DataToDGW(ArrRows, ArrColumns); if (radioButton2.Checked) RndData(dataGridView1); else ZeroData(dataGridView1); >private void numericUpDown2_ValueChanged(object sender, EventArgs e) < ArrColumns = (int)numericUpDown2.Value; DataToDGW(ArrRows, ArrColumns); if (radioButton2.Checked) RndData(dataGridView1); else ZeroData(dataGridView1); >private void button1_Click(object sender, EventArgs e) < try < int[] res = Calcdata(dataGridView1); label1.Text = "Номер столбцов с числами % 3: "; Array.ForEach(res, x =>label1.Text += x.ToString() + ","); if (label1.Text[label1.Text.Length - 1] == ',') label1.Text = label1.Text.Remove(label1.Text.Length - 1, 1); int indexCol = -1; var maxArRes = res.Max(); for (int i = 0; i < res.Length; i++) < if (maxArRes == res[i]) < indexCol = i; break; >> label2.Text = "№ Столбца с максимальным количеством элементов % 3: " +indexCol.ToString(); dataGridView1.ClearSelection(); for (int i = 0; i < dataGridView1.Rows.Count; i++) < dataGridView1.Rows[i].Cells[indexCol].Selected = true; dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[indexCol]; >> catch(Exception) < MessageBox.Show("Ошибка ввода!\n"); >> private void radioButton1_CheckedChanged(object sender, EventArgs e) < ZeroData(dataGridView1); >private void radioButton2_CheckedChanged(object sender, EventArgs e) < RndData(dataGridView1); >> >
Data Grid View. Data Grid View Control Collection Класс
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет коллекцию элементов управления, содержащихся в DataGridView.
public: ref class DataGridView::DataGridViewControlCollection : System::Windows::Forms::Control::ControlCollection
[System.Runtime.InteropServices.ComVisible(false)] public class DataGridView.DataGridViewControlCollection : System.Windows.Forms.Control.ControlCollection
public class DataGridView.DataGridViewControlCollection : System.Windows.Forms.Control.ControlCollection
[] type DataGridView.DataGridViewControlCollection = class inherit Control.ControlCollection
type DataGridView.DataGridViewControlCollection = class inherit Control.ControlCollection
Public Class DataGridView.DataGridViewControlCollection Inherits Control.ControlCollection
Наследование
DataGridView.DataGridViewControlCollection
Комментарии
Свойство ControlsDataGridView элемента управления возвращает экземпляр типа Control.ControlCollection , который можно привести к экземпляру типа DataGridView.DataGridViewControlCollection.
включает DataGridView.DataGridViewControlCollection такие элементы управления, как элемент управления редактированием и полосы прокрутки на DataGridView.
Конструкторы
Свойства
Возвращает количество элементов, содержащихся в коллекции.
Получает значение, указывающее, является ли этот объект коллекции доступным только для чтения.
Указывает объект Control, находящийся в заданном индексом местоположении в коллекции.
Указывает объект Control с заданным ключом в коллекции.
Получает элемент управления, владеющий данной коллекцией Control.ControlCollection.
Методы
Добавляет указанный элемент управления в коллекцию элементов управления.
Добавляет массив объектов управления в коллекцию.
Удаляет все элементы управления из DataGridView.
Определяет, является ли указанный элемент управления членом коллекции.
Определяет, содержится ли элемент с указанным ключом в коллекции Control.ControlCollection.
Копирует элементы коллекции в массив начиная с определенного индекса в массиве.
Копирует содержимое объекта DataGridView.DataGridViewControlCollection в массив Control, начиная с указанного индекса конечного массива.
Указывает, равен ли текущий объект коллекции указанному объекту.
Выполняет поиск элементов управления по их свойству Name и создает массив из всех элементов управления, которые соответствуют условиям поиска.
Извлекает индекс указанного дочернего элемента управления в коллекции элементов управления.
Извлекает индекс указанного дочернего элемента управления в коллекции и при необходимости вызывает исключение, если указанный элемент управления не обнаружен в коллекции элементов управления.
Извлекает ссылку на объект перечислителя, который используется для итерации по коллекции Control.ControlCollection.
Возвращает хэш-код данного экземпляра.
Возвращает объект Type для текущего экземпляра.
Извлекает индекс указанного элемента управления в коллекции элементов управления.
Извлекает индекс первого вхождения заданного элемента в коллекции.
Вставляет указанный объект Control в коллекцию DataGridView.DataGridViewControlCollection по заданному индексу.
Создает неполную копию текущего объекта Object.
Удаляет элемент управления из коллекции по указанному расположению индекса.
Удаляет дочерний элемент управления с указанным ключом.
Задает определенное значение индексу указанного дочернего элемента управления в коллекции.
Возвращает строку, представляющую текущий объект.
Явные реализации интерфейса
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.
Описание этого члена см. в разделе Clone().
Описание этого элемента см. в свойстве IsSynchronized.
Описание этого элемента см. в свойстве SyncRoot.
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.
Описание этого члена см. в разделе Add(Object).
Описание этого элемента содержится в методе Clear().
Описание этого элемента см. в свойстве IsFixedSize.
Описание этого элемента см. в свойстве Item[Int32].
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.
Описание этого члена см. в разделе Remove(Object).
Описание этого элемента содержится в методе RemoveAt(Int32).
Методы расширения
Приводит элементы объекта IEnumerable к заданному типу.
Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.
Позволяет осуществлять параллельный запрос.
Преобразовывает коллекцию IEnumerable в объект IQueryable.
Использование Visual C# для привязки элемента управления DataGrid к массиву объектов или структур
В этой статье содержатся сведения о том, как привязать массив объектов к элементу управления DataGrid.
Исходная версия продукта: Visual C #
Исходный номер базы знаний: 315786
Аннотация
Пример в этой статье состоит из формы Windows с элементом управления DataGrid для отображения значений свойств объекта и четырех кнопок команд для просмотра строк элемента управления DataGrid.
Требования
В этой статье предполагается, что вы знакомы со следующими разделами:
- Основные понятия программирования Visual C#
- Visual C# .NET
Проектирование класса
Класс, который должен быть привязан к элементу управления, должен иметь методы доступа к свойствам. Любое свойство, которое должно быть привязано, должно иметь метод свойства Set и метод свойства Get . Пример класса, используемый в этой статье, состоит из трех членов. В этой статье описан только один элемент. Также предоставлен параметризованный конструктор. Однако это не обязательно.
public class guitar < private string make; private string model; private short year; public guitar() < >public guitar(string make, string model, short year) < Make=make; Model=model; Year=year; >public string Make < get < return make; >set < make = value; >> >
Добавление экземпляров класса в массив
Чтобы создать экземпляры и добавить их в массив, выполните следующие действия:
- Объявите массив.
- Создайте экземпляры класса , а затем добавьте экземпляры в массив.
private guitar[] arr=new guitar[3]; arr[0] = new guitar("Gibson", "Les Paul", 1958); arr[1] = new guitar("Fender", "Jazz Bass", 1964); arr[2] = new guitar("Guild", "Bluesbird", 1971);
Привязка массива к элементу управления DataGrid
После заполнения массива задайте для свойства DataSource элемента управления DataGrid значение массива. Столбцы в элементе управления DataGrid заполняются на основе свойств, для которых существуют методы доступа к свойствам в области.
dataGrid1.DataSource=arr;
Предоставление средств для просмотра массива
Вы можете использовать для CurrencyManager просмотра массива. Для этого свяжите CurrencyManager с элементом BindingContext управления ( в данном случае — массивом ).
private CurrencyManager currencyManager=null; currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr];
Класс CurrencyManager имеет Position свойство, которым можно управлять, чтобы выполнять итерацию по элементам массива. Добавив или вычитая из текущего Position значения , можно просмотреть строки DataGrid элемента управления.
//Move forward one element. currencyManager.Position++; //Move back one element. currencyManager.Position--; //Move to the beginning. currencyManager.Position = 0; //Move to the end. currencyManager.Position = arr.Length - 1;
Пошаговый пример
- В Visual C# .NET создайте проект приложения Windows. Форма Form1 создается по умолчанию.
- Добавьте класс в проект.
- Замените код в Файле Class1.cs следующим кодом.
public class guitar < private string make; private string model; private short year; public guitar() < >public guitar(string Make, string Model, short Year) < make=Make; model=Model; year=Year; >public string Make < get < return make; >set < make = value; >> public string Model < get < return model; >set < model = value; >> public short Year < get < return year; >set < year = value; >> >
private guitar[] arr=new guitar[3]; private CurrencyManager currencyManager=null;
arr[0] = new guitar("Gibson", "Les Paul", 1958); arr[1] = new guitar("Fender", "Jazz Bass", 1964); arr[2] = new guitar("Guild", "Bluesbird", 1971); currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr]; dataGrid1.DataSource=arr;
currencyManager.Position++;
currencyManager.Position--;
currencyManager.Position = 0;
currencyManager.Position = arr.Length - 1;
Примечание. При необходимости можно изменить значения объектов.
Используйте структуру вместо класса
Правила привязки структуры совпадают с правилами привязки объекта. Требуется свойство, являющееся элементами доступа. Структура, созданная для этой цели, похожа на класс .
Чтобы выполнить привязку к массиву структур, выполните следующие действия.
-
Измените определение модуля класса Class1.cs в примере с
public class guitar
к следующему примеру:
public struct guitar
//public guitar() // < //>
Ссылки
Дополнительные сведения см. в разделе Потребители данных в Windows Forms справки visual Studio .NET Online.
Обратная связь
Были ли сведения на этой странице полезными?
Обратная связь
Отправить и просмотреть отзыв по
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode
Вывод данных в DataGridView из БД на C#
В Windows Forms табличные данные удобно выводить с помощью элемента управления DataGridView. В статье покажем, как это сделать на примере таблицы из базы данных и языка программирования C#.
Исходные данные для DataGridView
Имеется таблица в базе данных Microsoft SQL Server с информацией о факультетах университета.

Эти данные будем выводить в элемент DataGridView, расположенный на Windows Forms.
Программа с DataGridView
Создадим новый проект Windows Forms на Visual C# в Visual Studio. На форме расположим элемент управления DataGridView — для этого перетащите его с «Панели элементов» на макет окна.
Добавим в DataGridView три столбца под три соответствующих колонки из таблицы БД с помощью кнопки «Правка столбцов».

Для наглядности назовём их так же, как называются поля в таблице базы данных.

Переходим к написанию кода. Вся функциональность по чтению данных из БД и их последующему выводу в DataGridView реализована в методе LoadData().