WinForm 自定义查询

需求:

      设置自定义查询功能,使用户可以根据自行关注内容在界面显示相应信息。

 

设计思路:

      1.首先将原本所有包含的列完整查询出来,并填充到DataGridView
      2.将DataGridView各个列的visiable值转换成0/1(ture->1,false->0)后,再按序组合成一个配置字符串
      3.使用CheckedListBox控件中的项对应配置字符串中的值(DataGridView的列)。
      4.通过应用程序配置Settings.settings存取用户自定义设置的字符串值

 

功能实现:Demo

    设计图如下:

    
                      图1 初始查询信息

 

  

                                      图2 自定义显示列表

 

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Linq;
using  System.Text;
using  System.Windows.Forms;
using  CustomSelectDemo.Properties;

namespace  CustomSelectDemo
{
    
public   partial   class  Test : Form
    {
        
private   string  strCustomAwbInfo  =   "" ;
        
public  Test()
        {
            InitializeComponent();
        }

        
private   void  Test_Load( object  sender, EventArgs e)
        {
            pnlCustom.Visible 
=   false ;
            
// 初始化查询信息
            
// 读取配置文件的值
             if  (Settings.Default.strCustomAwbInfo  !=   "" )
            {
                strCustomAwbInfo 
=  Settings.Default.strCustomAwbInfo;
                ShowCustomDataGridView(dgvAwbInfo,strCustomAwbInfo);
            }
        }

        
///   <summary>
        
///  根据用户设置显示DataGridView内容
        
///   </summary>
        
///   <param name="customStr"></param>
        
///   <param name="dgv"></param>
         private   void  ShowCustomDataGridView(DataGridView dgv, string  strCustom)
        {
            
for  ( int  i  =   0 ; i  <  strCustom.Length; i ++ )
            {
                
switch  (strCustom[i].ToString())
                {
                    
case   " 1 " :
                        dgv.Columns[i].Visible 
=   true ;
                        
break ;
                    
case   " 0 " :
                        dgv.Columns[i].Visible 
=   false ;
                        
break ;
                    
default :
                        dgv.Columns[i].Visible 
=   true ;
                        
break ;
                }
            }
        }

        
///   <summary>
        
///  查询
        
///   </summary>
         private   void  btnSelect_Click( object  sender, EventArgs e)
        {
            
            DataTable dt 
=   new  DataTable();
            dt.Columns.Add(
" AwbNo " typeof (String));
            dt.Columns.Add(
" FlightNo " typeof (String));
            dt.Columns.Add(
" FlightDate " typeof (String));
            dt.Columns.Add(
" Piece " typeof (String));
            dt.Columns.Add(
" Weight " typeof (String));
            dt.Columns.Add(
" Remark " typeof (String));

            dt.Rows.Add(
" 784-12912900 " " CZ129 " " 2009-12-9 " " 10 " " 100 " "" );
            dt.Rows.Add(
" 784-12912911 " " CZ129 " " 2009-12-9 " " 11 " " 121 " "" );

            dgvAwbInfo.AutoGenerateColumns 
=   false ;
            dgvAwbInfo.DataSource 
=  dt;
        }

        
private   void  btnDgvCustom_Click( object  sender, EventArgs e)
        {
            pnlCustom.Visible 
=   true ;
            InitializeCheckedListBox(clbAwbInfo, strCustomAwbInfo);
        }

        
///   <summary>
        
///  根据用户设置初始化CheckedBoxList;第一次设置前全部选择
        
///   </summary>
         private   void  InitializeCheckedListBox(CheckedListBox clb,  string  strCustom)
        {
            
if  (strCustom  !=   "" )
            {
                
for  ( int  i  =   0 ; i  <  strCustom.Length; i ++ )
                {
                    
switch  (strCustom[i].ToString())
                    {
                        
case   " 1 " :
                            clb.SetItemChecked(i, 
true );
                            
break ;
                        
case   " 0 " :
                            clb.SetItemChecked(i, 
false );
                            
break ;
                        
default :
                            clb.SetItemChecked(i, 
true );
                            
break ;
                    }
                }
            }
            
else
            {
                
for  ( int  i  =   0 ; i  <  clb.Items.Count; i ++ )
                {
                    clb.SetItemChecked(i, 
true );
                }
            }
        }

        
///   <summary>
        
///  保存
        
///   </summary>
         private   void  btnSave_Click( object  sender, EventArgs e)
        {
            
string  str  =   "" ;
            
for  ( int  i  =   0 ; i  <  clbAwbInfo.Items.Count; i ++ )
            {
                
if  (clbAwbInfo.GetItemChecked(i))
                {
                    str 
+=   " 1 " ;
                }
                
else
                    {
                    str 
+=   " 0 " ;
                }
            }
            strCustomAwbInfo
= str;
            
// 修改配置文件的值
            Settings.Default.strCustomAwbInfo  =  strCustomAwbInfo;
            Settings.Default.Save();

            pnlCustom.Visible 
=   false ;
            ShowCustomDataGridView(dgvAwbInfo, strCustomAwbInfo);
        }

        
private   void  btnCancel_Click( object  sender, EventArgs e)
        {
            pnlCustom.Visible 
=   false ;
        }

        
private   void  btnExit_Click( object  sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

 

 

PS:本人比较少写原作,语言描述能力尚未足,文章中文字描述很少,请见谅。 还好实现功能的代码相对简单,看懂应该问题不大吧.. 

转载于:https://www.cnblogs.com/greatandforever/archive/2009/12/09/1620443.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值