DataGridView的DataGridViewComboBoxColumn列點擊一次,自動處於編輯狀態


本文轉載:http://www.cnblogs.com/Johnny_Z/archive/2012/02/12/2348235.html

Winform中的DataGridView數據綁定控件有時會用到ComboBox列,想要顯示ComboBox列的內容需要點擊兩到三次才可以。這使操作變得很麻煩,降低了易用性,尤其是在程序部署在一些小型設備或者觸摸屏設備上時,則更為不便。下面介紹兩種方法解決這個問題。

首先,我們創建一個Windows應用程序,在窗體中拖拽一個DataGridView控件,命名為dataGridView。要確保該控件的“啟用編輯”選項勾選。下面我們動態創建列,以及添加一行數據。寫一個函數IniteDGV,在窗體Shown事件中調用函數。

private void IniteDGV()
        {
            DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
            combo.HeaderText = "comboBox列";
            combo.Name = "combo";
            combo.Width = 80;
            combo.DataSource=(new string[] { "0", "1", "2" });

            DataGridViewTextBoxColumn textbox = new DataGridViewTextBoxColumn();
            textbox.HeaderText = "textbox列";
            textbox.Name = "textbox";
            textbox.Width = 100;

            dataGridView.Columns.AddRange(combo, textbox);
            DataGridViewRow row = new DataGridViewRow();
            dataGridView.Rows.Add(row);



            if (dataGridView.Columns.Contains("combo") )
            {
                row.Cells["combo"].Value = "0";
            }

 }
View Code

 

好了,以上基本工作做完了,下面說其中一個方法。

方法一:

在DataGridView控件的CellClick事件中添加如下代碼:

CellClick事件
private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
            {
                DataGridViewComboBoxColumn combo = dataGridView.Columns[e.ColumnIndex] as DataGridViewComboBoxColumn;
                if (combo != null)  //如果該列是ComboBox列
                {
                    dataGridView.BeginEdit(false); //結束該列的編輯狀態
                    DataGridViewComboBoxEditingControl comboEdite = dataGridView.EditingControl as DataGridViewComboBoxEditingControl;
                    if (comboEdite != null)
                    {
                        comboEdite.DroppedDown = true; //展現下拉列表
                    }
                }


                DataGridViewTextBoxColumn textbox = dataGridView.Columns[e.ColumnIndex] as DataGridViewTextBoxColumn;
                if (textbox != null) //如果該列是TextBox列
                {
                    dataGridView.BeginEdit(true); //開始編輯狀態
                }
            }
        }
View Code

 

方法二:

在DataGridView的CellEnter事件中添加如下代碼:

CellEnter事件
private void dataGridView_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView dgv = sender as DataGridView;

            if (dgv != null)
            {
                if (dgv.Columns[e.ColumnIndex].Name == "combo" &&
                   dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn)
                {
                    SendKeys.Send("{F4}"); //選中ComboBox列時,相當於按了鍵盤的F4鍵
                }
            }
        }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM