.Net 2.0 DataGridView中鍵盤事件處理方法

來源:互聯網
上載者:User

.Net 2.0中的DataGridView比前期版本的DataGrid功能強多了,但本人還是覺得有不足的地方。比如說其DataGridViewButtonColumn列,像這樣的列好像在本人開發過的系統中沒有太多的用(最重要的還是不能在其上編輯,可能是沒找到方法吧,再研究)。還有DataGridViewComboBoxColumn列,看起來比較漂亮,將其放在實際中,其實下拉的基本是列表或彈出一Form進行選擇,但還是有問題。得到的結果要是DataGridViewComboxColumn列中的值,如果不是就會報錯。還不可編輯(可能是沒找到方法,再研究,找到了再繼續發貼)。與以前VB6/VC6等中第三方組件開發商ComponentOne公司開發的True DB Grid還是要差點。

  下面主要介紹研究成果:.Net 2.0中的鍵盤事件。

  .Net 2.0中的鍵盤事件,研究了好久,只發現這兩種 :一種是DataGridView鍵盤事件,另一種是列鍵盤事件。

  第一種、DataGridView中鍵盤事件處理方法。此方法的使用與一般控制項的方法相同。操作也比較簡單。這種在DataGirdView中的事件用來操作比如刪除一列啦,添加一列啦,還有插入一列啦什麼的。鍵盤事件基本就三個:KeyDown,KeyPress,KeyUp三個事件,這裡我只介紹一個,其他的都是相同的。簡單介紹如下:

  註:以下樣本語句的DataGridView名為dgvDetails.

  委託方法:

  this.dgvDetails.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dgvDetails_KeyPress);

       方法:

  private void dgvDetails_KeyPress(object sender, KeyPressEventArgs e)
        {

          //想怎麼操作在這時處理
        } 

  第二種、就是DataGridView中列的事件,這種事件放在DataGridView中,開始本人用KeyPress來控制項輸入的資料為數字,其他的輸入不進去。怎麼搞都不行。不好意思,本人系統沒有Help。因軟體是網友送的,沒送Help。摸了好久,才發現有這麼個方法來實現。列的事件主要用來操作列中的資料。比如說:電話號碼,數量,金額啊什麼的。和大家分享研究成果。

  首先,要先定義一個Class級的變數(放在Form內,可別放在外面),

  private DataGridViewTextBoxEditingControl EditingControl;

       其次,添加EditingControlShowing事件委託

this.dgvDetails.EditingControlShowing += new System.Windows.Forms.DataGridViewEditingControlShowingEventHandler(this.dgvDetails_EditingControlShowing);

  第三步,定義委託的方法:

  private void dgvDetails_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
             EditingControl = (DataGridViewTextBoxEditingControl)e.Control;
            EditingControl.KeyPress += new KeyPressEventHandler(EditingControl_KeyPress);
        }

  註:加粗的地方很重要,主要是針對列的事件,這裡才是正題。

  第四步,定義列的委託方法啦,引用以其他控制項引用完全相同。

  private void EditingControl_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) ) e.Handled = true;
        }

GIS導航網

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.