DataGridView中內置控件常用事件使用心得


checkbox,button,imagebutton使用dataGridView1_CellContentClick

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            tb.Text+=string.Format("\r\n{0},Row:{1},Column:{2}","單元格內容單擊!",e.RowIndex,e.ColumnIndex);
        }

combobox使用EditingControlShowing+DropDownClosed,此二事件結合使用可以做到內置combobox一下拉選擇了就觸發事件

        private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            tb.Text += string.Format("\r\n{0},控件名:{1}", "單元格控件編輯!", e.Control.GetType());
            if (e.Control.GetType().Equals(typeof(DataGridViewComboBoxEditingControl)))
            {
                    DataGridViewComboBoxEditingControl editingControl = e.Control as DataGridViewComboBoxEditingControl;
                    try
                    {
                        editingControl.DropDownClosed -= new EventHandler(editingControl_DropDownClosed);
                    }
                    catch
                    {
                    }
                    editingControl.DropDownClosed += new EventHandler(editingControl_DropDownClosed);
            }
            else if (e.Control.GetType().Equals(typeof(DataGridViewTextBoxEditingControl)))
            {
                    DataGridViewTextBoxEditingControl editingControl = e.Control as DataGridViewTextBoxEditingControl;
                    try
                    {
                    }
                    catch
                    {
                    }
            }

        }
        private void editingControl_DropDownClosed(object sender, EventArgs e)
        {
            DataGridViewComboBoxEditingControl ctl = sender as DataGridViewComboBoxEditingControl;
            int r = dataGridView1.CurrentCell.RowIndex;
            int c = dataGridView1.CurrentCell.ColumnIndex;
            tb.Text += string.Format("\r\n{0},控件名:{1}", "單元格下拉框下拉!", ctl.GetType());
            dataGridView1.CellValueChanged -= dataGridView1_CellValueChanged;
        }

textbox一般只需要驗證事件可使用dgvJointList_CellValidating

        private void dgvJointList_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            int r = dgvJointList.CurrentCell.RowIndex;
            int c = dgvJointList.CurrentCell.ColumnIndex;
            if (dgvJointList.Columns["diameter"].Index == c ||
                dgvJointList.Columns["thickness"].Index == c ||
                dgvJointList.Columns["weldLength"].Index == c)
            {
                string txt = dgvJointList.CurrentCell.EditedFormattedValue.ToString();
                string errorMsg;
                if (!ValidNumericFF(txt, out errorMsg))
                {
                    e.Cancel = true;
                    this.errorProvider1.SetError(dgvJointList, errorMsg);
                }
                else
                {
                    this.errorProvider1.SetError(dgvJointList, "");
                }
            }
        }

 

 


單元格內容改變!,Row:-1,Column:0
單元格內容改變!,Row:-1,Column:1
單元格內容改變!,Row:-1,Column:2
單元格內容改變!,Row:-1,Column:3
單元格內容改變!,Row:-1,Column:4
單元格內容改變!,Row:-1,Column:5
單元格內容選擇改變!,Row:0,Column:0
單元格控件編輯!,控件名:System.Windows.Forms.DataGridViewTextBoxEditingControl

點擊checkboxcell

單元格驗證!,Row:0,Column:0
單元格內容選擇改變!,Row:0,Column:4
單元格單擊!,Row:0,Column:4
單元格內容單擊!,Row:0,Column:4

 

點擊comboboxcell

單元格驗證!,Row:0,Column:4
單元格內容改變!,Row:0,Column:4
單元格控件編輯!,控件名:System.Windows.Forms.DataGridViewComboBoxEditingControl
單元格內容選擇改變!,Row:0,Column:3
單元格單擊!,Row:0,Column:3

 

點擊textboxcell

單元格驗證!,Row:0,Column:3
單元格控件編輯!,控件名:System.Windows.Forms.DataGridViewTextBoxEditingControl
單元格內容選擇改變!,Row:0,Column:0
單元格單擊!,Row:0,Column:0
單元格離開!,Row:0,Column:0

 

 


免責聲明!

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



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