Перейти к содержимому

Winforms таблица как в excel

  • автор:

Практическое руководство. Создание таблицы подстановки для элемента управления ComboBox, ListBox или CheckedListBox в Windows Forms

Иногда полезно отображать данные в удобном для пользователя формате в форме Windows Forms и при этом сохранять их в формате, требуемом в используемой программе. Например, в бланке заказа продуктов питания могут отображаться элементы меню с названиями продуктов в списке. Однако таблица данных регистрации заказа будет содержать уникальные идентификаторы, представляющие продукты питания. В таблице ниже представлен пример хранения и отображения данных бланка заказа продуктов питания.

OrderDetailsTable

OrderID ItemID Количество
4085 12 1
4086 13 3

ItemTable

ИД Имя
12 Картофель
13 Цыпленок

В этом сценарии одна таблица OrderDetailsTable содержит фактические сведения, важные с точки зрения отображения и сохранения. Однако с целью экономии места они представлены в неудобном для восприятия виде. Другая таблица ItemTable содержит только данные, связанные с представлением, а именно сведения о том, какой код соответствует тому или иному продукту. Информации о фактических заказах продуктов в ней нет.

Таблица ItemTable связана с элементом управления ComboBox, ListBox или CheckedListBox с помощью трех свойств. Свойство DataSource содержит имя таблицы. Свойство DisplayMember содержит столбец данных таблицы, который должен отображаться в элементе управления (название продукта). Свойство ValueMember содержит столбец данных таблицы с сохраняемыми данными (идентификатор).

Таблица OrderDetailsTable связана с элементом управления с помощью коллекции привязок, доступных через свойство DataBindings. При добавлении объекта привязки в коллекцию свойство элемента управления связывается с определенным элементом данных (столбцом кодов) в источнике данных (таблице OrderDetailsTable). Когда в элементе управления делается выбор, в этой таблице сохраняются вводимые данные.

Создание таблицы подстановок

  1. Добавьте на форму элемент управления ComboBox, ListBox или CheckedListBox.
  2. Произведите подключение к источнику данных.
  3. Установите связь между данными в двух таблицах. См. раздел Знакомство с объектами DataRelation.
  4. Задайте следующие свойства. Их можно задать в коде или в конструкторе.
Свойство Параметр
DataSource Таблица, в которой содержатся сведения о том, какому коду соответствует тот или иной элемент. В приведенном выше сценарии это ItemTable .
DisplayMember Столбец таблицы источника данных, который необходимо отобразить в элементе управления. В приведенном выше сценарии это «Name» (для задания в коде используйте кавычки).
ValueMember Столбец таблицы источника данных, который содержит сохраняемую информацию. В приведенном выше сценарии это «ID» (для задания в коде используйте кавычки).
ListBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID") 
listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID"); 

См. также

  • Привязка данных и Windows Forms
  • Общие сведения об элементе управления ListBox
  • Общие сведения об элементе управления ComboBox
  • Общие сведения об элементе управления CheckedListBox
  • Создание списка для выбора элементов в Windows Forms

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Практическое руководство. Добавление таблиц и столбцов в элемент управления DataGrid в Windows Forms

Элемент управления DataGridView заменяет элемент управления DataGrid и расширяет его функциональные возможности; однако при необходимости элемент управления DataGrid можно сохранить для обратной совместимости и использования в будущем. Дополнительные сведения см. в разделе Различия элементов управления DataGridView и DataGrid в Windows Forms.

Данные в элементе управления DataGrid в Windows Forms можно отобразить в таблицах и столбцах, создав объекты DataGridTableStyle и добавив их в объект GridTableStylesCollection, к которому осуществляется доступ через свойство TableStyles элемента управления DataGrid. Каждый стиль таблицы управляет отображением содержимого любой таблицы данных, указанной в свойстве MappingName объекта DataGridTableStyle. По умолчанию стиль таблицы без указания стилей столбцов будет отображать все столбцы в этой таблице данных. Столбцы из таблицы можно ограничить, добавив объекты DataGridColumnStyle в объект GridColumnStylesCollection, к которому осуществляется доступ через свойство GridColumnStyles каждого объекта DataGridTableStyle.

Добавление таблицы и столбца в DataGrid программным способом

  1. Чтобы отобразить данные в таблице, необходимо сначала привязать элемент управления DataGrid к набору данных. Дополнительные сведения см. в статье Практическое руководство. Привязка элемента управления DataGrid в Windows Forms к источнику данных.

Внимание При программном указании стилей столбцов всегда создавайте объекты DataGridColumnStyle и добавляйте их в объект GridColumnStylesCollection перед добавлением объектов DataGridTableStyle в объект GridTableStylesCollection. При добавлении пустого объекта DataGridTableStyle в коллекцию объекты DataGridColumnStyle создаются автоматически. Следовательно, при попытке добавить в объект GridColumnStylesCollection новые объекты DataGridColumnStyle с повторяющимися значениями MappingName будет создано исключение.

Dim ts1 As New DataGridTableStyle() ts1.MappingName = "Customers" 
DataGridTableStyle ts1 = new DataGridTableStyle(); ts1.MappingName = "Customers"; 
DataGridTableStyle* ts1 = new DataGridTableStyle(); ts1->MappingName = S"Customers"; 
Dim myDataCol As New DataGridBoolColumn() myDataCol.HeaderText = "My New Column" myDataCol.MappingName = "Current" 
DataGridBoolColumn myDataCol = new DataGridBoolColumn(); myDataCol.HeaderText = "My New Column"; myDataCol.MappingName = "Current"; 
DataGridBoolColumn^ myDataCol = gcnew DataGridBoolColumn(); myDataCol->HeaderText = "My New Column"; myDataCol->MappingName = "Current"; 
ts1.GridColumnStyles.Add(myDataCol) 
ts1.GridColumnStyles.Add(myDataCol); 
ts1->GridColumnStyles->Add(myDataCol); 
DataGrid1.TableStyles.Add(ts1) 
dataGrid1.TableStyles.Add(ts1); 
dataGrid1->TableStyles->Add(ts1); 

См. также

  • Элемент управления DataGrid
  • Практическое руководство. Удаление или скрытие столбцов элемента управления DataGridView в Windows Forms

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Общие сведения об элементе управления DataGrid (Windows Forms)

Элемент управления DataGridView заменяет элемент управления DataGrid и расширяет его функциональные возможности; однако при необходимости элемент управления DataGrid можно сохранить для обратной совместимости и использования в будущем. Дополнительные сведения см. в разделе Различия элементов управления DataGridView и DataGrid в Windows Forms.

Элемент управления DataGrid в Windows Forms отображает данные в виде ряда строк и столбцов. В самом простом случае сетка привязана к источнику данных с помощью единственной таблицы, не содержащей связей. В этом случае данные отображаются в виде простых строк и столбцов, как в электронной таблице. Дополнительные сведения о привязке данных к другим элементам управления см. в разделе Привязка данных и Windows Forms.

Если элемент DataGrid привязан к данным с помощью нескольких связанных таблиц и в сетке включена навигация, в каждой строке сетки будут отображаться расширители. С помощью расширителя пользователь может переходить из родительской таблицы в дочернюю. При щелчке узла отображается дочерняя таблица, а при нажатии кнопки «Назад» — исходная родительская таблица. Таким образом в сетке отображаются иерархические связи между таблицами.

На приведенном ниже снимке экрана показан элемент управления DataGrid, привязанный к данным с помощью нескольких таблиц.

Элемент управления DataGrid может предоставлять пользовательский интерфейс для набора данных, навигацию между связанными таблицами и широкие возможности форматирования и редактирования.

Отображение и обработка данных — это разные функции: элемент управления обрабатывает пользовательский интерфейс, тогда как обновление данных обрабатывается архитектурой привязки данных Windows Forms и поставщиками данных .NET Framework. Таким образом обеспечивается синхронизация элементов управления, привязанных к одному источнику данных.

Если вы знакомы с элементом управления DataGrid в Visual Basic 6.0, вы можете обратить внимание на значительные отличия элемента управления DataGrid в Windows Forms.

Если сетка привязана к DataSet, столбцы и строки автоматически создаются, форматируются и заполняются. Дополнительные сведения см. в разделе Data Binding and Windows Forms. После создания элемента управления DataGrid можно добавлять, удалять, изменять порядок и форматировать столбцы и строки в зависимости от потребностей.

Привязка данных к элементу управления

Для работы элемента управления DataGrid он должен быть привязан к источнику данных с помощью свойств DataSource и DataMember во время разработки или метода SetDataBinding во время выполнения. Эта привязка указывает DataGrid на созданный экземпляр объекта источника данных, например DataSet или DataTable. Элемент управления DataGrid отображает результаты действий, выполняемых с данными. Большинство операций с данными выполняются не через DataGrid, а через источник данных.

Если данные в привязанном наборе данных обновляются посредством какого-либо механизма, элемент управления DataGrid отражает изменения. Если свойству ReadOnly сетки данных и стилей таблиц и столбцов присвоено значение false , данные в наборе данных можно обновлять с помощью элемента управления DataGrid.

В элементе управления DataGrid на определенный момент времени может отображаться только одна таблица. Если между таблицами определено отношение «родительская-дочерняя», пользователь может перемещаться между связанными таблицами для выбора таблицы, которая будет отображаться в элементе управления DataGrid. Сведения о привязке элемента управления DataGrid к источнику данных ADO.NET во время разработки или во время выполнения см. в статье Практическое руководство. Привязка элемента управления DataGrid в Windows Forms к источнику данных.

Источники данных, допустимые для DataGrid, включают следующие:

  • Класс DataTable
  • Класс DataView
  • Класс DataSet
  • Класс DataViewManager

Если источником является набор данных, он может быть объектом в форме или объектом, переданным в форму веб-службой XML. Привязку можно выполнять к типизированным или нетипизированным наборам данных.

Кроме того, элемент управления DataGrid можно привязать к дополнительным структурам, если объекты в структуре (например, элементы в массиве) предоставляют открытые свойства. В сетке будут отображаться все открытые свойства элементов в структуре. Например, если выполняется привязка элемента управления DataGrid к массиву объектов клиента, все открытые свойства этих объектов отобразятся в сетке. Иногда это означает, что хотя вы можете выполнить привязку к структуре, полученная связанная структура не всегда будет иметь практическое применение. Например, можно выполнить привязку к массиву целых чисел, но поскольку тип данных Integer не поддерживает открытое свойство, данные в сетке отображаться не будут.

Можно выполнить привязку к следующим структурам, если их элементы предоставляют открытые свойства:

  • к любым компонентам, реализующим интерфейс IList; (сюда входят одномерные массивы);
  • к любым компонентам, реализующим интерфейс IListSource;
  • к любым компонентам, реализующим интерфейс IBindingList;

Дополнительные сведения о возможных источниках данных см. в разделе Источники данных, поддерживаемые Windows Forms.

Отображение сетки

Обычно элемент управления DataGrid используется для отображения одной таблицы данных из набора данных. Однако этот элемент управления можно также использовать для отображения нескольких таблиц, включая связанные таблицы. Отображение сетки настраивается автоматически в зависимости от источника данных. В таблице ниже указано, что именно отображается в сетке в разных конфигурациях.

Содержимое набора данных Что отображается
Одна таблица Таблица отображается в сетке.
Несколько таблиц В сетке может отображаться иерархическое представление, с помощью которого пользователь может переходить к нужной таблице.
Несколько связанных таблиц В сетке может отображаться иерархическое представление, с помощью которого можно выбирать таблицы. Кроме того, можно задать отображение в сетке родительской таблицы. Записи в родительской таблице позволяют пользователям переходить к связанным строкам дочерних таблиц.

Таблицы в наборе данных связываются с помощью DataRelation. См. также раздел Создание связей между наборами данных.

Когда элемент управления DataGrid отображает таблицу и свойству AllowSorting присвоено значение true , данные можно сортировать, щелкая заголовки столбцов. Пользователь также может добавлять строки и редактировать ячейки.

Связи между наборами таблиц отображаются для пользователей с помощью структуры навигации «родительская-дочерняя». Родительские таблицы представляют высший уровень данных, а дочерние таблицы — это таблицы данных, производные от отдельных листингов в родительских таблицах. В каждой родительской строке, содержащей дочернюю таблицу, отображаются расширители. При щелчке расширителя создается список гиперссылок на дочерние таблицы. Когда пользователь переходит по ссылке, отображается дочерняя таблица. Щелкнув значок отображения и скрытия родительских строк (), он скрывает сведения о родительской таблице или приводит к повторному появлении, если пользователь ранее скрывал его. Пользователь может нажать кнопку «Назад», чтобы вернуться к предыдущей таблице.

Столбцы и строки

DataGrid состоит из коллекции объектов DataGridTableStyle, содержащихся в свойстве TableStyles элемента управления DataGrid. Стиль таблицы может содержать коллекцию объектов DataGridColumnStyle, содержащихся в свойстве GridColumnStyles класса DataGridTableStyle. Свойства TableStyles и GridColumnStyles можно изменить с помощью редакторов коллекций, доступных в окне Свойства.

К любому классу DataGridTableStyle, связанному с элементом управления DataGrid, можно получить доступ через коллекцию GridTableStylesCollection. Коллекцию GridTableStylesCollection можно изменить в конструкторе с помощью редактора коллекции DataGridTableStyle или программным путем с помощью свойства TableStyles элемента управления DataGrid.

На рисунке показаны объекты, включенные в элемент управления DataGrid.

Стили таблиц и столбцов синхронизируются с объектами DataTable и DataColumn путем задания для их свойства MappingName соответствующих свойств TableName и ColumnName. Когда класс DataGridTableStyle, не имеющий стилей столбцов, добавляется в элемент управления DataGrid, привязанный к допустимому источнику данных, и для свойства MappingName этого стиля таблицы задается допустимое свойство TableName, для этого стиля таблицы создается коллекция объектов DataGridColumnStyle. Для каждого объекта DataColumn в коллекции Columns объекта DataTable в коллекцию GridColumnStylesCollection добавляется соответствующий класс DataGridColumnStyle. Доступ к коллекции GridColumnStylesCollection осуществляется через свойство GridColumnStyles класса DataGridTableStyle. Столбцы можно добавлять или удалять из сетки, используя метод Add или Remove для коллекции GridColumnStylesCollection. Дополнительные сведения см. в разделе Практическое руководство. Добавление таблиц и столбцов в элемент управления DataGrid в Windows Forms и Практическое руководство. Удаление или скрытие столбцов элемента управления DataGrid в Windows Forms.

Коллекция типов столбцов расширяет класс DataGridColumnStyle, добавляя целый ряд возможностей форматирования и редактирования. Все типы столбцов наследуют от базового класса DataGridColumnStyle. Создаваемый класс зависит от свойства DataType класса DataColumn, который является базовым для DataGridColumn. Например, объект DataColumn, для свойства DataType которого задано значение Boolean, будет связан с DataGridBoolColumn. В следующей таблице описан каждый из этих типов столбцов.

Тип столбца Description
DataGridTextBoxColumn Принимает и отображает данные в виде форматированных или неформатированных строк. Возможности редактирования аналогичны возможностям редактирования данных в простом элементе TextBox. Наследует от DataGridColumnStyle.
DataGridBoolColumn Принимает и отображает значения true , false и NULL. Наследует от DataGridColumnStyle.

Двойной щелчок правого края столбца изменяет размер столбца для отображения полной подписи и самой широкой записи.

Стили таблиц и столбцов

После установки формата по умолчанию для элемента управления DataGrid можно настроить цвета, которые будут использоваться при отображении определенных таблиц в сетке данных.

Для этого необходимо создать экземпляры класса DataGridTableStyle. Стили таблиц определяют форматирование отдельных таблиц, которое не следует путать с форматированием самого элемента управления DataGrid по умолчанию. В определенный момент времени каждая таблица может иметь только один заданный для нее стиль.

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

Стили столбцов связаны со столбцами в наборе данных так же, как стили таблиц связаны с таблицами данных. Так же как и таблица может иметь только один стиль на конкретный момент времени, каждому столбцу можно назначить только один стиль в рамках определенного стиля таблицы. Эта связь определяется в свойстве MappingName столбца.

Если вы создали стиль таблицы, не добавив в него стили столбцов, Visual Studio добавляет стили столбцов по умолчанию при создании формы и сетки во время выполнения. Однако если добавить стили столбцов в созданный стиль таблицы, Visual Studio не будет создавать стили столбцов. Кроме того, необходимо определить стили столбцов и назначить их с помощью имени сопоставления, чтобы нужные столбцы отображались в сетке.

Поскольку выбор столбцов для отображения в сетке данных выполняется путем назначения им стиля столбца, можно включить в набор данных столбцы данных, которые не отображаются в сетке, не назначая им стиль. При этом, поскольку столбец данных включен в набор данных, можно программным образом редактировать данные, которые не отображаются.

Как правило, создание стилей столбцов и добавление их в коллекцию стилей столбцов выполняется перед добавлением стилей таблиц в коллекцию стилей таблиц. При добавлении в коллекцию пустого стиля таблицы стили столбцов создаются автоматически. Следовательно, при попытке добавить в коллекцию новые стили столбцов с повторяющимися значениями MappingName будет создано исключение.

Иногда может потребоваться изменить один столбец из нескольких (например, набор данных содержит 50 столбцов, а вам нужны только 49 из них). В этом случае проще импортировать все 50 столбцов и программно удалить один, а не добавлять все 49 столбцов по отдельности.

Форматирование

Форматирование, которое может применяться к элементу управления DataGrid, включает стили границ, стили линий сетки, шрифты, свойства подписи, выравнивание данных и чередующиеся фоновые цвета для строк. Дополнительные сведения см. в разделе Практическое руководство. Форматирование элемента управления DataGrid в Windows Forms.

События

Помимо общих событий управления, таких как MouseDown, Enter и Scroll, элемент управления DataGrid поддерживает события, связанные с редактированием и навигацией в сетке. Свойство CurrentCell определяет, какая ячейка выбрана. Событие CurrentCellChanged вызывается, когда пользователь переходит к новой ячейке. При переходе к новой таблице через отношение «родительская-дочерняя» вызывается событие Navigate. Событие BackButtonClick возникает, когда пользователь нажимает кнопку «Назад» при просмотре дочерней таблицы, а событие ShowParentDetailsButtonClick возникает при нажатии значка «показать/скрыть» для родительских строк.

См. также

  • Элемент управления DataGrid
  • Практическое руководство. Привязка элемента управления DataGrid в Windows Forms к источнику данных
  • Практическое руководство. Добавление таблиц и столбцов в элемент управления DataGrid в Windows Forms
  • Практическое руководство. Удаление или скрытие столбцов элемента управления DataGridView в Windows Forms
  • Практическое руководство. Форматирование элемента управления DataGrid в Windows Forms

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Как отобразить таблицу Excel в WinForm?

Рекомендую использовать сторонние библиотеки, поддерживающие формат xlsx. Использовать Interop не рекомендую (в основе его лежит медленный COM и требуется наличие MS Office).

Использовал библиотеку EPPlus. Она бесплатна для некоммерческого использования. Позволяет читать ячейки, а можно загрузить диапазон ячеек в DataTable.

Добавьте nuget пакет EPPlus в ваше приложение, а далее используйте вышеуказанные примеры кода для чтения Excel.

Практическое руководство. Создание таблицы подстановок с помощью компонента BindingSource в формах Windows Forms

Таблица подстановки — это таблица данных, в одном из столбцов которой отображаются данные из записей в связанной таблице. В следующих процедурах для отображения поля с отношением по внешнему ключу от родительской к дочерней таблице используется элемент управления ComboBox.

Чтобы вы могли представить это отношение, приведем пример родительской и дочерней таблицы.

CustomersTable (родительская таблица)

CustomerID CustomerName
712 Павел Кох
713 Тамара Иванова

OrdersTable (дочерняя таблица)

OrderID OrderDate CustomerID
903 12 февраля 2004 г. 712
904 13 февраля 2004 г. 713

В данном случае одна таблица, CustomersTable, содержит актуальную информацию, которую необходимо отобразить и сохранить. Для экономии места в таблице опущены пояснения. Другая таблица, OrdersTable, содержит только внешнюю информацию о том, какой номер идентификатора клиента соответствует тем или иным данным и идентификатору заказа. При этом имена клиентов не указываются.

Чтобы создать таблицу подстановки, в элементе управления ComboBox устанавливаются четыре важных свойства.

  • Свойство DataSource содержит имя таблицы.
  • Свойство DisplayMember содержит столбец данных таблицы, из которого нужно взять текст для элемента управления (имя клиента).
  • Свойство ValueMember содержит столбец данных таблицы, в которой хранится информация (номер идентификатора в родительской таблице).
  • Свойство SelectedValue предоставляет значение подстановки для дочерней таблицы на основании свойства ValueMember.

Представленные ниже процедуры показывают, как разместить форму в виде таблицы подстановки и привязать данные к ее элементам управления. Для успешного завершения процедур необходим источник данных с родительской и дочерней таблицами, связанными по внешнему ключу, как это уже говорилось выше.

Создание пользовательского интерфейса

  1. Перетащите элемент управления ComboBox из панели элементов в форму. Этот элемент управления будет отображать столбец из родительской таблицы.
  2. Перетащите другие элементы управления для отображения сведений из дочерней таблицы. Формат данных в таблице следует определить, исходя из выбранных элементов управления. Дополнительные сведения см. в разделе Функциональная классификация элементов управления Windows Forms.
  3. Перетащите в форму элемент управления BindingNavigator. Это позволит перемещаться по данным в дочерней таблице.

Подключение к данным и их привязка к элементам управления

  1. Выберите элемент управления ComboBox и нажмите на глиф «Быстрые действия», чтобы открыть одноименное диалоговое окно.
  2. Выберите элемент Использовать элементы, привязанные к данным.
  3. Щелкните стрелку рядом с раскрывающимся списком Источник данных. Если источник данных ранее был настроен для проекта или формы, он отобразится. В противном случае выполните следующие действия (в этом примере используются таблицы Customers и Orders учебной базы данных Борей, а ссылки на них приводятся в круглых скобках).
    1. Щелкните элемент Добавить источник данных проекта, чтобы подключиться к данным и создать источник данных.
    2. На странице приветствия Мастер настройки источника данных нажмите кнопку Далее.
    3. На странице Выбор типа источника данных выберите элемент База данных.
    4. На странице Выбор подключения к базе данных выберите тип подключения данных из списка доступных подключений. Если необходимое подключение данных недоступно, выберите элемент Создать подключение, чтобы создать новое подключение данных.
    5. Нажмите кнопку Да, сохранить подключение, чтобы сохранить строку подключения в файле конфигурации приложения.
    6. Выберите объекты базы данных, чтобы перенести их в приложение. В данном случае выберите родительскую и дочернюю таблицы (например, таблицы Customers и Orders) с отношением по внешнему ключу.
    7. Если необходимо, замените имя набора данных по умолчанию.
    8. Нажмите кнопку Готово.

    См. также

    • BindingSource
    • Компонент BindingSource
    • Элемент управления ComboBox
    • Привязка элементов управления к данным в Visual Studio

    Совместная работа с нами на GitHub

    Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

    Как отобразить таблицу Excel в WinForm?

    Рекомендую использовать сторонние библиотеки, поддерживающие формат xlsx. Использовать Interop не рекомендую (в основе его лежит медленный COM и требуется наличие MS Office).

    Использовал библиотеку EPPlus. Она бесплатна для некоммерческого использования. Позволяет читать ячейки, а можно загрузить диапазон ячеек в DataTable.

    Добавьте nuget пакет EPPlus в ваше приложение, а далее используйте вышеуказанные примеры кода для чтения Excel.

    Пошаговое руководство. Сбор данных с помощью Формы Windows

    Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

    В этом пошаговом руководстве показано, как открывается форма Windows Forms из настройки уровня документа для Microsoft Office Excel, выполняется сбор сведений от пользователя и запись этих сведений в ячейку листа.

    Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO. См. сведения о функциях, доступных по Приложение Office и типу проекта.

    Хотя в этом пошаговом руководстве используется проект уровня документа для Excel, рассмотренная процедура также применима и к другим проектам Office.

    Необходимые компоненты

    Для выполнения этого пошагового руководства требуются следующие компоненты:

    • Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье «Настройка компьютера для разработки решений Office».
    • Excel 2013 или Excel 2010.

    Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки Visual Studio.

    Создание нового проекта

    Первым шагом является создание проекта книги Excel.

    Создание проекта

    1. Создайте проект книги Excel с именем WinFormInputи выберите в мастере Создать новый документ . Дополнительные сведения см. в статье «Практическое руководство. Создание проектов Office в Visual Studio». Visual Studio открывает новую книгу Excel в конструкторе и добавляет проект WinFormInput в обозреватель решений.

    Добавление элемента управления NamedRange на лист

    Добавление именованного диапазона в Sheet1

    1. Выберите ячейку A1 в Sheet1 .
    2. В поле Имя введите formInput. Поле Имя находится слева от строки формул над столбцом A листа.
    3. Нажмите ВВОД. Элемент управления NamedRange добавляется в ячейку A1. Видимые изменения на листе отсутствуют, но значение formInput появляется в поле Имя (над листом слева) и в окне Свойства при выборе ячейки A1 .

    Добавление формы Windows Form в проект

    Создайте форму Windows Form, чтобы запрашивать сведения у пользователя.

    Добавление формы Windows Forms

    1. Выберите проект WinFormInput в обозревателе решений.
    2. В меню Проект выберите пункт Добавить форму Windows.
    3. Дайте этой форме имя GetInputString.vb или GetInputString.cs, а затем нажмите кнопку Добавить. Новая форма откроется в конструкторе.
    4. Добавьте в форму TextBox и Button .
    5. Выберите кнопку, найдите свойство Текст в окне Свойства и измените текст на ОК. Затем добавьте в ThisWorkbook.vb или ThisWorkbook.cs код для сбора информации от пользователя.

    Отображение формы Windows Form и сбор сведений

    Создайте экземпляр формы Windows GetInputString и отобразите его, а затем запишите информацию от пользователя в ячейку листа.

    Отображение формы и сбор информации
    1. Щелкните правой кнопкой мыши файл ThisWorkbook.vb или ThisWorkbook.cs в обозревателе решений, а затем нажмите кнопку Просмотр кода.
    2. В обработчике событий Open ThisWorkbook добавьте следующий код для объявления переменной формы GetInputString , а затем отобразите эту форму.

    Примечание. В C# необходимо добавить обработчик событий, как показано в событии Startup ниже. Сведения о создании обработчиков событий см. в статье «Практическое руководство. Создание обработчиков событий в проектах Office».

    private void ThisWorkbook_Startup(object sender, System.EventArgs e) < this.Open += new Microsoft.Office.Interop.Excel.WorkbookEvents_OpenEventHandler(ThisWorkbook_Open); >private void ThisWorkbook_Open()
    Private Sub ThisWorkbook_Open() Handles Me.Open Dim inputForm As New GetInputString() inputForm.ShowDialog() End Sub 
    public void WriteStringToCell(string formData)
    Public Sub WriteStringToCell(ByVal formData As String) Globals.Sheet1.formInput.Value2 = formData End Sub 

    Далее добавьте в форму код для обработки события нажатия кнопки.

    Отправка сведений на лист

    Отправка информации в лист

    1. Щелкните правой кнопкой мыши В GetInputString в обозревателе решенийи выберите Конструктор представлений.
    2. Дважды щелкните кнопку, чтобы открыть файл кода с добавленным обработчиком событий Click кнопки.
    3. Добавьте код в обработчик событий для приема входных данных из текстового поля, передачи их в функцию WriteStringToCell , а затем закрытия формы.
    Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text); this.Dispose(); 
    Globals.ThisWorkbook.WriteStringToCell(Me.TextBox1.Text) Me.Dispose() 

    Тест

    Теперь вы можете запустить проект. Появляется форма Windows Forms, и введенные данные отображаются в листе.

    Проверка книги

    1. Нажмите клавишу F5 для запуска проекта.
    2. Убедитесь, что форма Windows Forms появилась.
    3. Введите Hello World в текстовом поле и нажмите кнопку ОК.
    4. Убедитесь, что сообщение Hello World появилось в ячейке A1 листа.

    Следующие шаги

    В этом пошаговом руководстве описываются основные принципы отображения формы Windows Forms и передачи данных в лист. Вам может потребоваться выполнить другие задачи, приведенные ниже.

    • Использование элементов управления Windows Forms в книге Excel или документе Word. Дополнительные сведения см. в разделе «Элементы управления Windows Forms» в документах Office.
    • Измените пользовательский интерфейс microsoft Приложение Office lication из настройки на уровне документа или надстройки VSTO. Дополнительные сведения см. в разделе «Настройка пользовательского интерфейса Office».

    Связанный контент

    • Разработка решений Office
    • Написание кода в решениях Office
    • Программные надстройки VSTO
    • Настройки уровня документа программы
    • Пошаговое руководство по Word
    • Пошаговое руководство по Excel

    Практическое руководство. Создание таблицы подстановки для элемента управления ComboBox, ListBox или CheckedListBox в Windows Forms

    Иногда полезно отображать данные в удобном для пользователя формате в форме Windows Forms и при этом сохранять их в формате, требуемом в используемой программе. Например, в бланке заказа продуктов питания могут отображаться элементы меню с названиями продуктов в списке. Однако таблица данных регистрации заказа будет содержать уникальные идентификаторы, представляющие продукты питания. В таблице ниже представлен пример хранения и отображения данных бланка заказа продуктов питания.

    OrderDetailsTable

    OrderID ItemID Количество
    4085 12 1
    4086 13 3

    ItemTable

    ИД Имя
    12 Картофель
    13 Цыпленок

    В этом сценарии одна таблица OrderDetailsTable содержит фактические сведения, важные с точки зрения отображения и сохранения. Однако с целью экономии места они представлены в неудобном для восприятия виде. Другая таблица ItemTable содержит только данные, связанные с представлением, а именно сведения о том, какой код соответствует тому или иному продукту. Информации о фактических заказах продуктов в ней нет.

    Таблица ItemTable связана с элементом управления ComboBox, ListBox или CheckedListBox с помощью трех свойств. Свойство DataSource содержит имя таблицы. Свойство DisplayMember содержит столбец данных таблицы, который должен отображаться в элементе управления (название продукта). Свойство ValueMember содержит столбец данных таблицы с сохраняемыми данными (идентификатор).

    Таблица OrderDetailsTable связана с элементом управления с помощью коллекции привязок, доступных через свойство DataBindings. При добавлении объекта привязки в коллекцию свойство элемента управления связывается с определенным элементом данных (столбцом кодов) в источнике данных (таблице OrderDetailsTable). Когда в элементе управления делается выбор, в этой таблице сохраняются вводимые данные.

    Создание таблицы подстановок

    1. Добавьте на форму элемент управления ComboBox, ListBox или CheckedListBox.
    2. Произведите подключение к источнику данных.
    3. Установите связь между данными в двух таблицах. См. раздел Знакомство с объектами DataRelation.
    4. Задайте следующие свойства. Их можно задать в коде или в конструкторе.
    Свойство Параметр
    DataSource Таблица, в которой содержатся сведения о том, какому коду соответствует тот или иной элемент. В приведенном выше сценарии это ItemTable .
    DisplayMember Столбец таблицы источника данных, который необходимо отобразить в элементе управления. В приведенном выше сценарии это «Name» (для задания в коде используйте кавычки).
    ValueMember Столбец таблицы источника данных, который содержит сохраняемую информацию. В приведенном выше сценарии это «ID» (для задания в коде используйте кавычки).
    ListBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID") 
    listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID"); 

    См. также

    • Привязка данных и Windows Forms
    • Общие сведения об элементе управления ListBox
    • Общие сведения об элементе управления ComboBox
    • Общие сведения об элементе управления CheckedListBox
    • Создание списка для выбора элементов в Windows Forms

    Совместная работа с нами на GitHub

    Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *