zoukankan      html  css  js  c++  java
  • 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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    119. Pascal's Triangle II
    118. Pascal's Triangle
    112. Path Sum
    111. Minimum Depth of Binary Tree
    110. Balanced Binary Tree
    108. Convert Sorted Array to Binary Search Tree
    88. Merge Sorted Array
    83. Remove Duplicates from Sorted List
    70. Climbing Stairs
    陌陌面试经历
  • 原文地址:https://www.cnblogs.com/liubaolongcool/p/2516131.html
Copyright © 2011-2022 走看看