zoukankan      html  css  js  c++  java
  • C# WinForm中的一些小问题

    前言

    记一些C#窗体应用编程中的小问题。

    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控制输入框只接受数字输入
    4. ** 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();
    7. DataTable 查询问题
    DataTable就“像”一张数据库表一样,可以进行查询操作

    DataRow[] drs = dt.Select(" BH is not null");  // 查询BH不为空的记录
    

    返回的是DataRow 数组

    最后

    未完,待续。。。

  • 相关阅读:
    gridview列的汇总
    windows phone 页面传值(7)
    windows phone 获取手机图片库中图片(4)
    windows phone 使用相机并获取图片(3)
    windows phone 页面导航(6)
    windows phone 三种数据共享的方式(8)
    windows phone 独立存储空间的操作 (2)
    ref 和out传参的不同
    Web Service 实例
    关于DataList,Repeater,GridView的一些问题!! joe
  • 原文地址:https://www.cnblogs.com/numen-fan/p/11395713.html
Copyright © 2011-2022 走看看