欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用C#語言實(shí)現(xiàn)的查詢條件界面展開和收起功能

 更新時(shí)間:2016年11月23日 13:56:08   作者:北風(fēng)其涼  
這篇文章主要介紹了使用C#語言實(shí)現(xiàn)的查詢條件界面展開和收起功能的完美解決方案,需要的朋友可以參考下

先簡(jiǎn)單說一下應(yīng)用場(chǎng)景,現(xiàn)有一個(gè)C#客戶端的查詢界面,上方放置查詢條件,下方放置查詢結(jié)果。因?yàn)閷?shí)際情況中查詢條件可能占了好幾行的位置,所以希望在界面上默認(rèn)只保留一行最主要的查詢條件,并在右側(cè)有一個(gè)“展開/收起”功能。

收起時(shí)界面:

展開時(shí)界面:

最開始我的實(shí)現(xiàn)方式是這樣的,在界面上放置一個(gè)LinkLabel,設(shè)置此LinkLabel的鼠標(biāo)單擊事件,調(diào)整查詢條件所在Panel的Height屬性。

C#代碼如下:

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;
namespace SatyrAndNymph
{
public partial class FormMethod1 : Form
{
//收起狀態(tài)時(shí)Panel高度
private const int HeightWhenFold = 50;
//收起狀態(tài)時(shí)LinkLabel顯示文字
private const string DescriptionWhenFold = "展開";
//展開狀態(tài)時(shí)Panel高度
private const int HeightWhenExpand = 85;
//展開狀態(tài)時(shí)LinkLabel顯示文字
private const string DescriptionWhenExpand = "收起";
/// <summary>
/// 窗體構(gòu)造函數(shù)
/// </summary>
public FormMethod1()
{
InitializeComponent();
//構(gòu)造函數(shù)后將Panel調(diào)整為收起狀態(tài)
lnkControlHeight.Text = DescriptionWhenFold;
pnlQueryConds.Height = HeightWhenFold;
}
/// <summary>
/// LinkLabel單擊事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lnkControlHeight_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//根據(jù)顯示文字為展開/收起,調(diào)整Panel的高度及LinkLabel展示文字
if (lnkControlHeight.Text == DescriptionWhenFold)
{
lnkControlHeight.Text = DescriptionWhenExpand;
pnlQueryConds.Height = HeightWhenExpand;
}
else if (lnkControlHeight.Text == DescriptionWhenExpand)
{
lnkControlHeight.Text = DescriptionWhenFold;
pnlQueryConds.Height = HeightWhenFold;
}
}
}
}

不過我認(rèn)為這樣處理還是不夠完美:每次使用都需要專門創(chuàng)建一個(gè)LinkLabel,并且每個(gè)頁面的代碼都不一樣,因?yàn)楦溉萜鞯臉?biāo)識(shí)符是不一樣的。

為了解決這兩個(gè)問題,我設(shè)計(jì)了一個(gè)自定義控件以方便后續(xù)的開發(fā)工作。

控件名為HeightController,界面如下:

自定義控件中只包含一個(gè)LinkLabel,AutoSize屬性被設(shè)置為False,Dock屬性被設(shè)置為Full,TextAlign屬性被設(shè)置為MiddleLeft。

C#代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace SatyrAndNymph
{
/// <summary>
/// 展開/收起控制器
/// </summary>
public partial class HeightController : UserControl
{
/// <summary>
/// 展開/收起控制器
/// </summary>
public HeightController()
{
InitializeComponent();
}
private void HeightController_Load(object sender, EventArgs e)
{
//設(shè)計(jì)器模式時(shí),不觸發(fā)展開/收起,否則會(huì)對(duì)設(shè)計(jì)工作造成干擾
if (!this.DesignMode)
{
//調(diào)整展開/收起情況
if (ControllerStatus == ControllerStatusEnum.FOLD)
{
Fold();
}
else if (ControllerStatus == ControllerStatusEnum.EXPAND)
{
Expand();
}
}
}
/// <summary>
/// 控制器狀態(tài)
/// </summary>
private ControllerStatusEnum _controllerStatus = ControllerStatusEnum.FOLD;
///<summary>
/// 控制器狀態(tài)
///</summary>
[System.ComponentModel.Description("控制器狀態(tài)")]
public ControllerStatusEnum ControllerStatus
{
get
{
return _controllerStatus;
}
set
{
_controllerStatus = value;
}
}
/// <summary>
/// 父容器展開
/// </summary>
public void Expand()
{
ControllerStatus = ControllerStatusEnum.EXPAND;
if (this.Parent != null)
{
this.Parent.Height = HeightWhenExpand;
}
this.lnkHeightController.Text = DescriptionWhenExpand;
}
/// <summary>
/// 父容器收起
/// </summary>
public void Fold()
{
ControllerStatus = ControllerStatusEnum.FOLD;
if (this.Parent != null)
{
this.Parent.Height = HeightWhenFold;
}
this.lnkHeightController.Text = DescriptionWhenFold;
}
/// <summary>
/// 收起時(shí)高度
/// </summary>
private int _heightWhenFold = 50;
///<summary>
/// 收起時(shí)高度
///</summary>
[DefaultValue(50)]
[System.ComponentModel.Description("收起時(shí)高度")]
public int HeightWhenFold
{
get
{
return _heightWhenFold;
}
set
{
_heightWhenFold = value;
}
}
/// <summary>
/// 收起時(shí)顯示文字
/// </summary>
private string _descriptionWhenFold = "展開";
///<summary>
/// 收起時(shí)顯示文字
///</summary>
[System.ComponentModel.Description("收起時(shí)顯示文字")]
public string DescriptionWhenFold
{
get
{
return _descriptionWhenFold;
}
set
{
_descriptionWhenFold = value;
}
}
/// <summary>
/// 展開時(shí)高度
/// </summary>
private int _heightWhenExpand = 85;
///<summary>
/// 展開時(shí)高度
///</summary>
[DefaultValue(85)]
[System.ComponentModel.Description("展開時(shí)高度")]
public int HeightWhenExpand
{
get
{
return _heightWhenExpand;
}
set
{
_heightWhenExpand = value;
}
}
/// <summary>
/// 展開時(shí)顯示文字
/// </summary>
private string _descriptionWhenExpand = "收起";
///<summary>
/// 展開時(shí)顯示文字
///</summary>
[System.ComponentModel.Description("展開時(shí)顯示文字")]
public string DescriptionWhenExpand
{
get
{
return _descriptionWhenExpand;
}
set
{
_descriptionWhenExpand = value;
}
}
/// <summary>
/// 點(diǎn)擊LinkLabel文字
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lnkHeightController_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (this.Parent != null)
{
int height = this.Parent.Height;
//根據(jù)父容器高度判斷父容器應(yīng)是收起還是展開
if (ControllerStatus == ControllerStatusEnum.FOLD)
{
Expand();
}
else
{
Fold();
}
}
}
}
}

使用此控件時(shí),直接將此控件拖入要改變高度的Panel或其他容器即可。

使用前需要先在控件屬性中設(shè)置好如下5項(xiàng)內(nèi)容:

各屬性說明如下:

1、ControllerStatus,是一個(gè)枚舉,包含EXPAND和FOLD兩種選擇,決定窗體打開時(shí)查詢條件是展開或是收起的。

2、DescriptionWhenExpand,當(dāng)查詢條件區(qū)域處于展開狀態(tài)時(shí),控制器展示的文字

3、DescriptionWhenFold,當(dāng)查詢條件區(qū)域處于收起狀態(tài)時(shí),控制器展示的文字

4、HeightWhenExpand,查詢條件區(qū)域處于展開狀態(tài)時(shí)高度

5、HeightWhenFold,查詢條件區(qū)域處于收起狀態(tài)時(shí)高度

HeightController控件使用效果如下:

收起時(shí)界面:

展開時(shí)界面:

DEMO程序下載地址:

鏈接: http://pan.baidu.com/s/1jHSvVee  密碼: qfp7

以上所述是小編給大家介紹的使用C#語言實(shí)現(xiàn)的查詢條件界面展開和收起功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論