亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

收起時界面:

展開時界面:

最開始我的實現(xiàn)方式是這樣的,在界面上放置一個LinkLabel,設(shè)置此LinkLabel的鼠標單擊事件,調(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)時Panel高度
private const int HeightWhenFold = 50;
//收起狀態(tài)時LinkLabel顯示文字
private const string DescriptionWhenFold = "展開";
//展開狀態(tài)時Panel高度
private const int HeightWhenExpand = 85;
//展開狀態(tài)時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;
}
}
}
}

不過我認為這樣處理還是不夠完美:每次使用都需要專門創(chuàng)建一個LinkLabel,并且每個頁面的代碼都不一樣,因為父容器的標識符是不一樣的。

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

控件名為HeightController,界面如下:

自定義控件中只包含一個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è)計器模式時,不觸發(fā)展開/收起,否則會對設(shè)計工作造成干擾
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>
/// 收起時高度
/// </summary>
private int _heightWhenFold = 50;
///<summary>
/// 收起時高度
///</summary>
[DefaultValue(50)]
[System.ComponentModel.Description("收起時高度")]
public int HeightWhenFold
{
get
{
return _heightWhenFold;
}
set
{
_heightWhenFold = value;
}
}
/// <summary>
/// 收起時顯示文字
/// </summary>
private string _descriptionWhenFold = "展開";
///<summary>
/// 收起時顯示文字
///</summary>
[System.ComponentModel.Description("收起時顯示文字")]
public string DescriptionWhenFold
{
get
{
return _descriptionWhenFold;
}
set
{
_descriptionWhenFold = value;
}
}
/// <summary>
/// 展開時高度
/// </summary>
private int _heightWhenExpand = 85;
///<summary>
/// 展開時高度
///</summary>
[DefaultValue(85)]
[System.ComponentModel.Description("展開時高度")]
public int HeightWhenExpand
{
get
{
return _heightWhenExpand;
}
set
{
_heightWhenExpand = value;
}
}
/// <summary>
/// 展開時顯示文字
/// </summary>
private string _descriptionWhenExpand = "收起";
///<summary>
/// 展開時顯示文字
///</summary>
[System.ComponentModel.Description("展開時顯示文字")]
public string DescriptionWhenExpand
{
get
{
return _descriptionWhenExpand;
}
set
{
_descriptionWhenExpand = value;
}
}
/// <summary>
/// 點擊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();
}
}
}
}
}

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

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

各屬性說明如下:

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

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

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

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

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

HeightController控件使用效果如下:

收起時界面:

展開時界面:

DEMO程序下載地址:

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

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

相關(guān)文章

最新評論