如何限定DataGridView,使其只能輸入數字

來源:互聯網
上載者:User

 

 

 

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)<br /> {<br /> //if (dataGridView1.CurrentCell.ColumnIndex == 1)<br /> {<br /> TextBox tx = e.Control as TextBox;<br /> // Remove an existing event-handler, if present, to avoid<br /> // adding multiple handlers when the editing control is reused.<br /> tx.KeyPress -= new KeyPressEventHandler(tx_KeyPress);<br /> tx.KeyPress += new KeyPressEventHandler(tx_KeyPress);<br /> }<br /> }<br /> // Only numeric and Backspace key is valid<br /> private void tx_KeyPress(object sender, KeyPressEventArgs e)<br /> {<br /> if (!(char.IsNumber(e.KeyChar) || e.KeyChar == '/b'))<br /> e.Handled = true;<br /> }

 

其中,第8行代碼的意義在於移除之前可能訂閱過的KeyPress事件,防止同一事件被多次訂閱

MSDN詳細說明:

 

The DataGridView control hosts one editing control at a time, and reuses the editing control whenever the cell type does not change between edits. When attaching event-handlers to the editing control, you must therefore take precautions to avoid attaching the same handler multiple times. To avoid this problem, remove the handler from the event before you attach the handler to the event. This will prevent duplication if the handler is already attached to the event, but will have no effect otherwise. For more information, see the example code in the DataGridViewComboBoxEditingControl class overview.

聯繫我們

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