日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dataGridView使用指南系列一、回车换行或换列完美解决方案

發布時間:2024/9/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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使用指南系列一、回车换行或换列完美解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。