zoukankan      html  css  js  c++  java
  • 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:本人比较少写原作,语言描述能力尚未足,文章中文字描述很少,请见谅。 还好实现功能的代码相对简单,看懂应该问题不大吧.. 

  • 相关阅读:
    软件下载链接获取方法
    【转】Linux 查看端口占用情况
    [转]SpringBoot第十集:国际化与Webjars的应用(2020最新最易懂)
    【转】Vue生命周期理解(带图的哦)
    Visual Studio 2019&WebStorm&CMD 创建vue项目
    Qt-Button使用QSS变图片按钮
    Qt-滚动条QSS样式
    Qt-鼠标点击别处隐藏widget
    OSG-修改osg鼠标中轮放大缩小的操作键
    OSG-在使用单位的kit编译osgQOpenGL时提示“语法错误:"unit"的前面应有“:””
  • 原文地址:https://www.cnblogs.com/greatandforever/p/1620443.html
Copyright © 2011-2022 走看看