{"id":1158,"date":"2014-10-29T12:02:28","date_gmt":"2014-10-29T12:02:28","guid":{"rendered":"https:\/\/ibex.tech\/visualcpp\/?p=1158"},"modified":"2022-02-17T06:24:03","modified_gmt":"2022-02-17T06:24:03","slug":"buttons-in-a-datagridview","status":"publish","type":"post","link":"https:\/\/ibex.tech\/visualcpp\/datagridview\/buttons-in-a-datagridview","title":{"rendered":"Buttons, Images etc in a DataGridView"},"content":{"rendered":"<h4>\nProgrammatically&nbsp;creating DataGridView with customised items in each cell<br \/>\n<\/h4>\n<h5>\nSetup The DataGridView<br \/>\n<\/h5>\n<pre>\r\n<code>\r\n\t\/\/----- CREATE THE DATAGRID VIEW COLUMNS -----\r\n\tdataGridView1-&gt;AutoGenerateColumns = false;\r\n\tdataGridView1-&gt;DataSource = nullptr;\t\t\t\/\/Clear the grid if necessary\r\n\tdataGridView1-&gt;Columns-&gt;Clear();\r\n\r\n\t\/\/TEXT BOX COLUMN\r\n\tDataGridViewTextBoxColumn ^DataGridColumnString1 = gcnew DataGridViewTextBoxColumn();\r\n\tDataGridColumnString1-&gt;HeaderText = &quot;My String Column&quot;;\r\n\t\/\/DataGridColumnString1-&gt;ReadOnly = true;\r\n\t\/\/DataGridColumnName-&gt;SortMode = DataGridViewColumnSortMode::NotSortable;\r\n\tdataGridView1-&gt;Columns-&gt;Add(DataGridColumnString1);\r\n\r\n\t\/\/BUTTON COLUMN\r\n\tDataGridViewButtonColumn ^DataGridColumnButton1 = gcnew DataGridViewButtonColumn();\r\n\tDataGridColumnButton1-&gt;HeaderText = &quot;My Button Column&quot;;\r\n\t\/\/DataGridColumnButton1-&gt;ReadOnly = true;\r\n\tdataGridView1-&gt;Columns-&gt;Add(DataGridColumnButton1);\r\n\r\n\t\/\/IMAGE COLUMN\r\n\tDataGridViewImageColumn ^DataGridColumnImage1 = gcnew DataGridViewImageColumn();\r\n\tDataGridColumnImage1-&gt;HeaderText = &quot;My Image Column&quot;;\r\n\t\/\/DataGridColumnImage1-&gt;ReadOnly = true;\r\n\tdataGridView1-&gt;Columns-&gt;Add(DataGridColumnImage1);\r\n\r\n\t\/\/COMBO BOX COLUMN\r\n\tDataGridViewComboBoxColumn ^DataGridColumnComboBox1 = gcnew DataGridViewComboBoxColumn();\r\n\tDataGridColumnComboBox1-&gt;HeaderText = &quot;My Combo Box Column&quot;;\r\n\t\/\/DataGridColumnComboBox1-&gt;ReadOnly = true;\r\n\t\/\/DataGridColumnComboBox1-&gt;FlatStyle = FlatStyle::Flat;\t\/\/Enable to remove button look of cell\r\n\tDataGridColumnComboBox1-&gt;Items-&gt;Add(&quot;A&quot;);\r\n\tDataGridColumnComboBox1-&gt;Items-&gt;Add(&quot;B&quot;);\r\n\tDataGridColumnComboBox1-&gt;Items-&gt;Add(&quot;C&quot;);\r\n\tdataGridView1-&gt;Columns-&gt;Add(DataGridColumnComboBox1);\r\n\t\r\n\tdataGridView1-&gt;Columns[0]-&gt;Width = 120;\r\n\tdataGridView1-&gt;Columns[1]-&gt;Width = 80;\r\n\tdataGridView1-&gt;Columns[2]-&gt;Width = 60;\r\n\tdataGridView1-&gt;Columns[3]-&gt;AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::Fill;\r\n\r\n\t\/\/----- ADD THE ROWS -----\r\n\t\/\/Row 0\r\n\tdataGridView1-&gt;Rows-&gt;Add();\r\n\tdataGridView1-&gt;Rows[0]->Cells[0]-&gt;Value = &quot;Row 0&quot;;\r\n\tdataGridView1-&gt;Rows[0]->Cells[1]-&gt;Value = &quot;Button 0&quot;;\r\n\tdataGridView1-&gt;Rows[0]->Cells[2]->Value = imageList1->Images[0];\r\n\tdataGridView1-&gt;Rows[0]->Cells[3]-&gt;Value = &quot;A&quot;;\r\n\r\n\t\/\/Row 1\r\n\tdataGridView1-&gt;Rows-&gt;Add();\r\n\tdataGridView1-&gt;Rows[1]->Cells[0]-&gt;Value = &quot;Row 1&quot;;\r\n\tdataGridView1-&gt;Rows[1]->Cells[1]-&gt;Value = &quot;Button 1&quot;;\r\n\tdataGridView1-&gt;Rows[1]->Cells[2]->Value = imageList1->Images[0];\r\n\tdataGridView1-&gt;Rows[1]->Cells[3]-&gt;Value = &quot;B&quot;;\r\n\r\n<\/code><\/pre>\n<h5>\nThe Cell Clicked Function<br \/>\n<\/h5>\n<pre>\r\n<code>\r\n\t\/\/********************************************************\r\n\t\/\/********************************************************\r\n\t\/\/********** DATAGRIDVIEW CELL \/ BUTTON CLICKED **********\r\n\t\/\/********************************************************\r\n\t\/\/********************************************************\r\n\tprivate: System::Void dataGridView1_CellClick(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e)\r\n\t{\r\n\t\t\tif (e-&gt;RowIndex &gt; -1)\t\t\/\/Ignore clicks of the column headers\r\n\t\t\t{\r\n\t\t\t\tif (e-&gt;ColumnIndex == 1)\r\n\t\t\t\t{\r\n\t\t\t\t\tMessageBox::Show(&quot; Row &quot; + e-&gt;RowIndex + &quot;, Column &quot; + e-&gt;ColumnIndex + &quot; button clicked&quot;);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t}\r\n<\/code><\/pre>\n<h4>\nSimple&nbsp;DataGridView&nbsp;with a column of matching buttons<br \/>\n<\/h4>\n<h5>\nSetup the DataGridView<br \/>\n<\/h5>\n<pre>\r\n<code>\r\n\t\/\/--------------------------------\r\n\t\/\/----- SETUP DATA GRID VIEW -----\r\n\t\/\/--------------------------------\r\n\tdataGridView1-&gt;DataSource = nullptr;\t\t\t\/\/Clear the grid if necessary\r\n\tdataGridView1-&gt;Columns-&gt;Clear();\r\n\r\n\tdataGridView1-&gt;AutoGenerateColumns = false;\r\n\tdataGridView1-&gt;ColumnCount = 3;\r\n\tdataGridView1-&gt;Columns[0]-&gt;Name = &quot;Column A&quot;;\r\n\tdataGridView1-&gt;Columns[1]-&gt;Name = &quot;Column B&quot;;\r\n\tdataGridView1-&gt;Columns[2]-&gt;Name = &quot;Column C&quot;;\r\n\r\n\tarray&lt;String^&gt; ^DataGridRow = gcnew array&lt;String^&gt; { &quot;1&quot;, &quot;Item 1&quot;, &quot;100&quot; };\r\n\tdataGridView1-&gt;Rows-&gt;Add(DataGridRow);\r\n\r\n\tDataGridRow = gcnew array&lt;String^&gt; { &quot;2&quot;, &quot;Item 2&quot;, &quot;200&quot; };\r\n\tdataGridView1-&gt;Rows-&gt;Add(DataGridRow);\r\n\t\r\n\tDataGridRow = gcnew array&lt;String^&gt; { &quot;3&quot;, &quot;Item 3&quot;, &quot;300&quot; };\r\n\tdataGridView1-&gt;Rows-&gt;Add(DataGridRow);\r\n\t\r\n\tDataGridRow = gcnew array&lt;String^&gt; { &quot;4&quot;, &quot;Item 4&quot;, &quot;400&quot; };\r\n\tdataGridView1-&gt;Rows-&gt;Add(DataGridRow);\r\n\r\n\tDataGridViewButtonColumn ^DataGridButton = gcnew DataGridViewButtonColumn();\r\n\tdataGridView1-&gt;Columns-&gt;Add(DataGridButton);\r\n\tDataGridButton-&gt;HeaderText = &quot;Button Column&quot;;\r\n\tDataGridButton-&gt;Text = &quot;Click Here&quot;;\r\n\tDataGridButton-&gt;Name = &quot;Abc&quot;;\r\n\tDataGridButton-&gt;UseColumnTextForButtonValue = true;\r\n<\/code><\/pre>\n<h5>\nThe Cell Clicked Function<br \/>\n<\/h5>\n<pre>\r\n<code>\r\n\t\/\/********************************************************\r\n\t\/\/********************************************************\r\n\t\/\/********** DATAGRIDVIEW CELL \/ BUTTON CLICKED **********\r\n\t\/\/********************************************************\r\n\t\/\/********************************************************\r\n\tprivate: System::Void dataGridView1_CellClick(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e)\r\n\t{\r\n\t\t\tif (e-&gt;RowIndex &gt; -1)\t\t\/\/Ignore clicks of the column headers\r\n\t\t\t{\r\n\t\t\t\tif (e-&gt;ColumnIndex == 3)\r\n\t\t\t\t{\r\n\t\t\t\t\tMessageBox::Show(&quot; Row &quot; + e-&gt;RowIndex + &quot;, Column &quot; + e-&gt;ColumnIndex + &quot; button clicked&quot;);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t}\r\n<\/code><\/pre>\n<p>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Programmatically&nbsp;creating DataGridView with customised items in each cell Setup The DataGridView \/\/&#8212;&#8211; CREATE THE DATAGRID VIEW COLUMNS &#8212;&#8211; dataGridView1-&gt;AutoGenerateColumns = false; dataGridView1-&gt;DataSource = nullptr; \/\/Clear the grid if necessary dataGridView1-&gt;Columns-&gt;Clear(); \/\/TEXT BOX COLUMN DataGridViewTextBoxColumn ^DataGridColumnString1 = gcnew DataGridViewTextBoxColumn(); DataGridColumnString1-&gt;HeaderText = &quot;My String Column&quot;; \/\/DataGridColumnString1-&gt;ReadOnly = true; \/\/DataGridColumnName-&gt;SortMode = DataGridViewColumnSortMode::NotSortable; dataGridView1-&gt;Columns-&gt;Add(DataGridColumnString1); \/\/BUTTON COLUMN DataGridViewButtonColumn ^DataGridColumnButton1 = [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[75],"tags":[],"class_list":["post-1158","post","type-post","status-publish","format-standard","hentry","category-datagridview"],"_links":{"self":[{"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/posts\/1158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/comments?post=1158"}],"version-history":[{"count":8,"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/posts\/1158\/revisions"}],"predecessor-version":[{"id":1363,"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/posts\/1158\/revisions\/1363"}],"wp:attachment":[{"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/media?parent=1158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/categories?post=1158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ibex.tech\/visualcpp\/wp-json\/wp\/v2\/tags?post=1158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}