ProcessCmdKey方法讓DataGridView按Enter斷行符號鍵轉到下一列的格

來源:互聯網
上載者:User

ProcessCmdKey方法讓DataGridView按Enter斷行符號鍵轉到下一列的格,使用DataGridView的時候經常需要修改其預設的操作方式,如按Enter斷行符號鍵轉到下一列的格,或直接把Enter當成是Tab鍵。這樣的需求,對於DataGridView來說是很簡單的。你需要做的就是重寫其ProcessCmdKey方法。另一種需求是當編輯的列是某種特定的DataGridViewColumn時,執行特殊的操作。這個過程中我們需要配合DataGridView的系統訊息與DataGridViewColumn的系統訊息來實現一定的功能。

    1、將Enter鍵變成Tab鍵
    這是一個比較符合普通使用者的操作習慣,對於操作DataGridView,使用ProcessCmdKey方法就足夠了。下面是實現。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)

        {

            base.ProcessCmdKey(ref msg, keyData);

            int WM_KEYDOWN = 256;

            int WM_SYSKEYDOWN = 260;

            bool _disable = false;

            if (msg.Msg == WM_KEYDOWN || msg.Msg == WM_SYSKEYDOWN)

            {

                switch (keyData)

                {

                    case Keys.Enter:

                        SendKeys.Send("{Tab}");

                        _disable = true;

                        break;

                }

            }

            return _disable;

        }

      SendKeys.Send就是發送鍵訊息,與使用者直接敲擊鍵盤的鍵是一樣的效果。

    上面的方法意思是當傳送的系統訊息是WM_KEYDOWN, WM_SYSKEYDOWN,敲擊的是Enter鍵,就取消這個訊息,並發送Tab訊息鍵。

      2、DataGridViewComboBoxColumn的快速下拉
    如果你剛剛開始使用DataGirdView,一定覺得ComboBox列好麻煩,如果當前是選定的,點擊一下是開始編輯,再點擊一下下列小箭頭才是下列動作,再選擇項。
    假設一下,如果可以這樣:使用者一按鍵盤就馬上下拉,然後是自動篩選,那可能是很好的功能(視不同人的操作習慣而定)。
    這個需求是可以達到,在重寫ProcessCmdKey方法時,捕捉A-Z按鍵,並判斷當前的是不是ComboBoxColumn,不過DataGridViewComboBoxColumn需要重新定義,將它分柝為Column,Cell和EditingControl三個檔案。

在ProcessCmdKey重寫時,一捕捉到A-Z按鍵,就Disabled它並發送F2鍵,F2鍵是插入操作符,並需要重定義EditingControl控制項,增加OnKeyUp的重寫,再判斷A-Z的操作,並發送F4鍵,F4是下拉指令鍵。其實,也可以直接在ProcessCmdKey發送F2和F4,不過,到期使用ProcessCmdKey可能是比較麻煩的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.