• winform开发日常问题小记


     问题目录:

    1.按钮获得焦点后有边框 如何去掉

    2.DataGridView DataSet不显示数据。

    3.dataGridView list泛型数据源,绑定后再次绑定无数据

    4:Combox 绑定数据源 取值

    1.按钮获得焦点后有边框 如何去掉

    处理办法,添加按钮print事件 指定按钮的print事件为 Override_print

    (摘自网上)

            //需要引用命名空间System.Reflection;
            public void HideFocusCues(Control control)
            {
                Type vType = typeof(Control);
                FieldInfo vFieldInfo = vType.GetField("uiCuesState",
                    BindingFlags.Instance | BindingFlags.Public |
                    BindingFlags.NonPublic | BindingFlags.Static |
                    BindingFlags.FlattenHierarchy);
                vFieldInfo.SetValue(control, 15);
            }
            void Override_Paint(object sender, PaintEventArgs e)
            {
                HideFocusCues((Control)sender);
            }

    2.DataGridView DataSet不显示数据。

     DataSet ds = WfBll.getList("");
    
     dataGridView1.dataSource=ds;

    界面上dataGridView1里就是没有数据

    而监视ds 里有数据

    后来改成了这样

     DataSet ds = WfBll.getList("");
    
     dataGridView1.dataSource=ds.tables[0];

    就可以了

    在B/S结构的网站里 这样写是可以的(数据源指定到一个dataSet也可)。而在这种C/S的结构里数据源就必须制定到具体的表。不知道这是为什么?有知道的可以告诉下

    3.dataGridView list泛型数据源,绑定后再次绑定无数据

    list<StudentModel> list = new List<StudentModel>();
    
    StudentModel  model = new StudentModel(){
    
    StuName="QA龙"
    
    };
    
    list.add(model);
    
    dataGridView1.dataSource= list; //OK  到这里数据显示正常
    
    //然后我要改变数据源
    
    StudentModel  model1 = new StudentModel(){
    
    StuName="张三"
    
    };
    
    list.add(model1);
    
    dataGridView1.dataSource= list;
    
    //这样dataGridView1中就是不显示更改后的值,监视dataSource也是有值就是界面不显示

     后来从网上查了查,泛型list做dataGridView的数据源 是存在这个问题。很多童鞋都碰到过.

    找了一个比较好的解决办法 将list泛型替换成bindingList专门为绑定提供的泛型就OK了。或者使用dataTable

    参考:http://hi.baidu.com/zhangge9477/blog/item/40336802196b3e094afb51ea.html#0

    4.WinForm 中 combox 绑定完数据源后取值

        //绑定数据源
                DataTable dt = dicBll.GetFieldList("101");
                cboDengJSmallC.DataSource = dt;
                cboDengJSmallC.DisplayMember = "FieldName";
                cboDengJSmallC.ValueMember = "FieldValue";
    
                //取值还是比较麻烦的 
                // cboDengJBigClass.SelectedValue;值为DataRowView类型
    
    
                //使用如下方法才能取到想要的value值
                if (cboDengJBigClass.SelectedIndex != -1)
                {
                    DataRowView row = (DataRowView)cboDengJBigClass.SelectedValue;
                    BindDengJiSmallClass(row["FieldValue"].ToString());
                }


    作者:QA龙
    出处:http://www.cnblogs.com/liubaolongcool/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    c# TCP高性能通信
    c#实现的HTTP服务端
    c#的二进制序列化组件MessagePack介绍
    c# 任务超时执行
    c#项目总结
    etcd客户端c#
    开发的服务集群部署方案,以etcd为基础(java)
    udt的java版本judt项目持续升级1.2版本
    udt通信java再次升级1.1版
    (转)Spring Boot(二) & lombok
  • 原文地址:https://www.cnblogs.com/liubaolongcool/p/2516131.html
Copyright © 2020-2023  润新知