dataGridView使用指南系列一、回车换行或换列完美解决方案
生活随笔
收集整理的這篇文章主要介紹了
dataGridView使用指南系列一、回车换行或换列完美解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在使用datagridview控件時,默認按回車是跳轉到下一行的當前列的,要想讓按回車跳轉到同一行的下一列該怎么做呢?
百度搜索了一下,大都是使用該控件的key_down事件和CellEndEdit進行處理,我都試驗了一下,全都不行,不能達到預期的效果,而且使原來的方向鍵的功能也搞亂了。
找了半天,最后終于找到一個有效的方法(注:不是我發明的),重載窗體的ProcessCmdKey事件,代碼如下:
代碼 bool enterkey;protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
enterkey = false;
if (keyData == Keys.Enter) //監聽回車事件
{
if (this.gvGzb.IsCurrentCellInEditMode) //如果當前單元格處于編輯模式
{
enterkey = true; //把是否點擊按鈕設置為真
if (btnSetEnter.Text != "豎")
if (gvGzb.CurrentCell.RowIndex == gvGzb.Rows.Count - 1)
{
//SendKeys.Send("{Up}");
SendKeys.Send("{Tab}");
}
else
{
SendKeys.Send("{Up}");
SendKeys.Send("{Tab}");
}
}
}
//繼續原來base.ProcessCmdKey中的處理
return base.ProcessCmdKey(ref msg, keyData);
}
以上代碼只處理編輯狀態下的回車事件,在普通狀態下的回車事件就要用key_down事件處理了:
代碼 private void gvGzb_KeyDown(object sender, KeyEventArgs e){
if ((e.KeyCode == Keys.Return) && (btnSetEnter.Text != "豎"))
{
SendKeys.Send("{Tab}");
e.Handled = true;
if ((gvGzb.FirstDisplayedScrollingColumnHiddenWidth > 0) && !gvGzb.Columns[gvGzb.SelectedCells[0].ColumnIndex].Frozen)
{
gvGzb.FirstDisplayedScrollingColumnIndex = gvGzb.SelectedCells[0].ColumnIndex;
}
}
}
上面的FirstDisplayedScrollingColumnIndex屬性設置,是為了在datagirdview的列很多的情況下,按回車換列將滾動條后面的列自動顯示出來,如下圖,我用net做的簡易工資管理系統,有很多項,如果不設置的話,最后一列只能看到一半。
提供這個方法的那位仁兄,不知為什么還要處理Cell_Parsing事件,我這里不需要已經發覺很完美了。
總結
以上是生活随笔為你收集整理的dataGridView使用指南系列一、回车换行或换列完美解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克火星移民成功吗 期待可以成功
- 下一篇: 建行卡被暂停非柜面交易是什么原因