Click here to Skip to main content
Licence CDDL
First Posted 6 Mar 2008
Views 53,568
Downloads 1,781
Bookmarked 30 times

DataGridView Control with ListBox

By | 6 Mar 2008 | Article
In this article, I have discussed how to develop a control that inherits standard features of DataGridView and adds additional features to that control. By locking this NewDataGridView control, you will be able to develop a DataGridView control adding many more features as you wish.
Introduction.JPG

Introduction

We can add DataGridViewComboBoxColumn control to a specified column of a Standard DataGridView control that comes with .NET. There are some limitations with that control such as when entering a cell it is not popup that displays its content. Another thing is there is limited number of component support with DataGridView such as DataGridViewButtonColumn, DataGridViewCheckBoxColumn, DataGridViewComboBoxColumn, etc. It is difficult to add additional components to DaraGridView control.

In this article, I have discussed how to develop a control that inherits standard features of DataGridView and adds additional features to that control. By locking this NewDataGridView control, you will be able to develop a DataGridView control adding many more features as you wish.

Using the Code

How to add this control to your project?

Add AdvDataGridView and AdvListBox projects or its DLL to your solution.

How_to_add_control_to_your_project.JPG

How to Add this Control into your Form?

Drag and drop NewDataGridView control from ToolBox into your form.

How_to_add_control_to_your_form.JPG

How to add ListBox to DataGridView Control?

After adding NewGridView control to your form, you should add ListBox according to your requirements. Note: Before you add ListBox, columns should be added to the NewDataGridView. Listbox can be added through the property window of NewDataGridView control. Use ListBox Details section.

Add_listbox_to_DataGridView.JPG

After adding a ListBox, you should bind it with a particular column of NewDataGridView. To do that, you have to use Binding Column section of property window of ListBox.

Set_ListBox_to_Column.JPG

Now you have to define EventHandler for each ListBox that you have added to the NewDataGridView component for assigning a selected item to a cell and hide that ListBox when double clicked on the listbox. Here is the code for that:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Test_Application
{
    public partial class Form1 : Form
    {
        int rowIndex, columnIndex;

        public Form1()
        {
            InitializeComponent();

            //EventHandler for ListBox that added to the DataGridView.
            this.newDataGridView1.ListBoxCollection[0].DoubleClick += 
                new EventHandler(ListBox1_DoubleClick);
        }

        /// <summary>
        /// When ListBox is double clicked, called this method.
        /// Add select item of ListBox into appropriate cell of the DataGridView.
        /// After then hide ListBox.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void ListBox1_DoubleClick(object sender, EventArgs e)
        {
            this.newDataGridView1[columnIndex, rowIndex].Value = 
                this.newDataGridView1.ListBoxCollection[0].SelectedItem.ToString();

            this.newDataGridView1.ListBoxCollection[0].Visible = false;
        }

        /// <summary>
        /// Get row index and column index of selected cell of the DataGridView.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void newDataGridView1_CellEnter
		(object sender, DataGridViewCellEventArgs e)
        {
            rowIndex = e.RowIndex;
            columnIndex = e.ColumnIndex;
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// Add new row to the DataGridView.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAddRow_Click(object sender, EventArgs e)
        {
            this.newDataGridView1.Rows.Add();
        }
    }
}

History

  • 7th March, 2008: Initial post

License

This article, along with any associated source code and files, is licensed under The Common Development and Distribution License (CDDL)

About the Author

Manjula Wickramathunga

Other
Creative Technology Solutions Pte Ltd
Sri Lanka Sri Lanka

Member

Manjula Wickramathunga currently is working at Creative Technology Solutions Private Limited as a Consultant. He is working with Microsoft Technologies such as C#, MS SQL server 2000,2005 and 2008, ASP.NET 2.0/3.5/4.0.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
Questionllist box Pinmemberdheeraj94572:57 8 Mar '12  
GeneralError After implementing NewDataGridView PinmemberRavindraJumrani5:03 30 Jul '08  
GeneralRe: Error After implementing NewDataGridView PinmemberRavindraJumrani0:52 24 Sep '08  
GeneralRe: Error After implementing NewDataGridView Pinmemberengnog4:18 26 Dec '09  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120517.1 | Last Updated 7 Mar 2008
Article Copyright 2008 by Manjula Wickramathunga
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid