C# WinForm中的一些小問題

前言

記一些C#窗體應用編程中的小問題。git

  1. DataGridView 設置Selected = true後實際選中行標依舊是第一行。
    一般經過this.dataGridView1.Rows[i].Selected = true;後,在實際顯示的時候,確實第i被選中,然而經過CurrentRow取值都是第一行,並且查看選中行標確實0
  • 解決
this.dataGridView1.Rows[i].Selected = true;
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[i].Cells[0]; // 關鍵
  1. 清除DataGridView默認選中
    一般在給DataGridView設置了DataSource後,會默認選中第一行。
  • 解決
    DataBindingComplete事件this.dataGridView1.ClearSelection();,也能夠在其餘地方調用清空選擇行。
  1. TextBox只接受數字輸入
    好比只接受一個整數輸入,實現KeyPress事件,其中實現
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = e.KeyChar != 8 && !Char.IsDigit(e.KeyChar)
}

關於帶有小數點的數字校驗可查看winForm控制輸入框只接受數字輸入數據庫

  1. ** DataGridView按照某一列排序後,一些現實效果丟失**
    若是在DataGridView初始化時,設置了一些現實效果,好比說根據數據的不一樣設置不一樣的底色,可是在排序後底色就消失了。
  • 解決
    實現Sorted事件,在該事件中從新設置顯示效果。
  1. 關於DataGridView 的this.dataGridView.DataSource as DataTable 問題
    DataTable dt = this.dataGridView.DataSource as DataTable , 這句話能夠將DataGridView的的數據轉到dt中,其實dt所持有的引用就是DataGridView的數據源,也即dt若是發生了改變,DataGridView也會發生改變。
  • 結果
    若是不但願dt的改變影響到datagridview,使用DataTable dt = (this.dataGridView.DataSource as DataTable).copy()
  1. DataTable排序問題
    DataTable能夠在代碼中設定按照一列或者多列排序
dt.DefaultView.Sort = "BH DESC";

按照編號降序排序(控制默認最小), 注意此時的dt並無按照意願排序,由於還差一步編程

dt = dt.DefaultView.ToTable();

須要從新ToTable();數組

  1. DataTable 查詢問題
    DataTable就「像」一張數據庫表同樣,能夠進行查詢操做
DataRow[] drs = dt.Select(" BH is not null");  // 查詢BH不爲空的記錄

返回的是DataRow 數組this

最後

未完,待續。。。code

相關文章
相關標籤/搜索